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, которые существуют для создания форм, которые моделируют модели, избавляя вас от проблем сложности здесь. Просто перестань наследовать форму.