Django: 调用metaclasses基础时出错

这就是一个错误

TypeError: 调用metaclasses基础时出错
元划分的冲突:衍生类的metaclass必须是 /Nestostrogim./ 所有基地的MetaClasses子类

影响我的课程 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/:


我不太明白它意味着如何从我的模型继承 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 /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


</module></module>
已邀请:

小明明

赞同来自:

这是问题所在的地方:


class Business/models.Model, forms.Form/:


您正在尝试从模型和表单继承。 你不能也不应该。

您不能这样做,因为派生类的Metaclass必须是 /Nestostrogim./ 所有基地的Metaclasss子类。 表格有一个metaclass:


__metaclass__ = DeclarativeFieldsMetaclass


该模型还有一个metaclass:


__metaclass__ = ModelBase


如果您这样做,您需要建立从这两个类的Metaclass。

但是,你不应该这样做,因为 django 它有 ModelForms, 它存在创建模拟模型的表单,从这里消除了复杂性的问题。 只是停止从表格中继承。

要回复问题请先登录注册