我试图为一些额外的字段扩展 auth.models 组。这是我在 myapp.models.py 中所做的:
class ProfileGroupBase(type):
def __new__(cls, name, bases, attrs):
module = attrs.pop('__module__')
parents = [b for b in bases if isinstance(b, ProfileGroupBase)]
if parents:
fields = []
for obj_name, obj in attrs.items():
if isinstance(obj, models.Field): fields.append(obj_name)
Group.add_to_class(obj_name, obj)
return super(ProfileGroupBase, cls).__new__(cls, name, bases, attrs)
class ProfileGroup(object):
__metaclass__ = ProfileGroupBase
class MyGroup(ProfileGroup):
mobile = models.CharField(max_length = 15)
email = models.CharField(max_length = 15)
使用这些代码,移动和电子邮件字段将添加到管理页面上的组中。现在我想添加另一个多线程字段,所以我在 MyGroup(ProfileGroup) 类下添加了这个:
annotations = models.ManyToManyField(Annotation, verbose_name=_('annotation'), blank=True)
然后我在同一个 models.py 文件下创建了一个新的模型注解:
class Annotation(models.Model):
index = models.IntegerField()
name = models.CharField(max_length = 100)
但是,出现错误:未定义名称“注释”。我想知道 MyGroup 类和 Annotation 类是在同一个 models.py 下定义的,它们实际上是分开的。我很困惑,有人知道这是怎么回事吗?谢谢。