Django,ManyToManyField(模型)在定义模型时

时间:2016-11-30 16:05:41

标签: python django

我是Django的新手,我遇到了一些问题: 我正在尝试准备网站,用户可以将自己附加到自定义模型“UserGroup”(而不是来自User.group),这样他们就会成为ManyToManyField关系的成员。但我还想向这些群体添加信息,无论他们是否与其他群体相关联。怎么办这样的事情?我在这里尝试这样做,在UserGroup定义中:

related_groups = models.ManyToManyField('UserGroup', blank=True)

但显然我不能这样做,我在迁移过程中遇到了一些问题:

django.core.exceptions.FieldDoesNotExist: UserGroup_related_groups has no field named 'from_usergroup

我想这可能是因为错误的思维方式。提前感谢您的帮助! :)

2 个答案:

答案 0 :(得分:0)

  1. 您对用户组使用了错误的类名。正确的名称是
  2. 您应该使用OneToOne Field。
  3. 所以你应该这样写:

    related_groups = models.OneToOneField('Group', blank=True)
    

    不要忘记以前导入Group模型!

    from django.contrib.auth.models import Group
    

    P.S。 有两种方法可以做到这一点: 1)创建自己的类(即ExtGroup)并将OneToOneField设置为原始Group类。你可能试图这样做。 2)使用您自己的用户类和组类。

    以下是关于每种方式的非常好的文档:https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#extending-the-existing-user-model

    以下是同一问题的答案:Customize Django Group Model

    希望它有所帮助;)

答案 1 :(得分:0)

使用“self”表示您正在链接到同一个班级。

related_groups = models.ManyToManyField("self", blank=True)

正如此SO帖子Django Many-to-Many (m2m) Relation to same model

中所建议的那样