Django: ошибка при вызове баз метакласса
вот ошибка
TypeError: ошибка при вызове баз метакласса конфликт метаклассов: метакласс производного класса должен быть (нестрогим) подклассом метаклассов всех его оснований
классе в течение моей models.py
class Business(models.Model, forms.Form):
name = models.CharField(max_length=128)
tel_no = models.CharField(max_length=11)
address_ln1 = models.CharField(max_length=128)
address_ln2 = models.CharField(max_length=128)
city = models.CharField(max_length=64)
county = GBCountySelect()
postcode = GBPostcodeField()
website = models.URLField(max_length=128)
# Logging Info
slug = models.SlugField()
date_added = models.DateField(auto_now_add=True)
time_added = models.TimeField()
added_by_user = models.CharField(max_length=64)
last_edit_time = models.TimeField(auto_now=True)
last_edit_date = models.DateField(auto_now=True)
строка, в которой я получаю ошибку:
name = models.CharField(max_length=128)
но я (думаю) это означает одно:
class Business(models.Model, forms.Form):
Я не уверен, что это означает в точности, как Я унаследовал свои модели от моделей.Модель и формы.Форма в одном классе? Могу ли я не передавать два значения при создании класса? Если да, то как?
ЕЩЕ ОДНО РЕДАКТИРОВАНИЕ
All my imports
from django.db import models
from django import forms
from django.contrib.localflavor import generic
from django.contrib.localflavor.gb.forms import GBPostcodeField, GBCountySelect
полный traceback:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/jws1000/.virtualenvs/glutenfree/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/home/jws1000/.virtualenvs/glutenfree/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/jws1000/.virtualenvs/glutenfree/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
self.execute(*args, **options.__dict__)
File "/home/jws1000/.virtualenvs/glutenfree/lib/python2.7/site-packages/django/core/management/base.py", line 231, in execute
self.validate()
File "/home/jws1000/.virtualenvs/glutenfree/lib/python2.7/site-packages/django/core/management/base.py", line 266, in validate
num_errors = get_validation_errors(s, app)
File "/home/jws1000/.virtualenvs/glutenfree/lib/python2.7/site-packages/django/core/management/validation.py", line 30, in get_validation_errors
for (app_name, error) in get_app_errors().items():
File "/home/jws1000/.virtualenvs/glutenfree/lib/python2.7/site-packages/django/db/models/loading.py", line 158, in get_app_errors
self._populate()
File "/home/jws1000/.virtualenvs/glutenfree/lib/python2.7/site-packages/django/db/models/loading.py", line 64, in _populate
self.load_app(app_name, True)
File "/home/jws1000/.virtualenvs/glutenfree/lib/python2.7/site-packages/django/db/models/loading.py", line 88, in load_app
models = import_module('.models', app_name)
File "/home/jws1000/.virtualenvs/glutenfree/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/jws1000/envs/glutenfree/glutenfree/glutenfree/listings/models.py", line 9, in <module>
class Business(models.Model, forms.Form):
File "/home/jws1000/.virtualenvs/glutenfree/lib/python2.7/site-packages/django/db/models/base.py", line 41, in __new__
new_class = super_new(cls, name, bases, {'__module__': module})
TypeError: Error when calling the metaclass bases
metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
1 ответов
вот в чем проблема:
class Business(models.Model, forms.Form):
вы пытаетесь наследовать от модели и формы. Ты не можешь и не должен.--4-->
вы не можете, потому что метакласс производного класса должен быть (нестрогим) подклассом метаклассов всех его оснований. Форма имеет метакласс:
__metaclass__ = DeclarativeFieldsMetaclass
модель также имеет метакласс:
__metaclass__ = ModelBase
Если бы вы это сделали, вам нужно было бы установить метакласс, который происходит от обоих из них.
, вы не следует этого делать, потому что django имеет ModelForms, которые существуют для создания форм, которые моделируют модели, избавляя вас от проблем сложности здесь. Просто перестань наследовать форму.