相关疑难解决方法(0)

如何在Django中为同一个模型提供两个外键?

我想要两个外键到同一个模型:

class Test(models.model):
    example1 = models.ForeignKey(Example)
    example2 = models.ForeignKey(Example)
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:

字段'example1'的访问者与相关字段'Example.test_set'冲突.将related_name参数添加到'example1'的定义中.

django django-models

42
推荐指数
3
解决办法
3万
查看次数

Django多对多的关系,并通过

我想存储哪个用户邀请了另一个用户到一个群组......但是django告诉我这是一个暧昧和违反规则(这是有道理的).

groups.group:中间模型Group_to_Member具有多个用户的外键,这是不明确的,不允许使用.

那我该怎么做呢?也许是一般关系?可能会工作但似乎有点复杂......这就是我接近它的方式(删除了不相关的位)

from django.contrib.auth.models import User

class UserGroup(models.Model):
    members = models.ManyToManyField(User, through='Group_to_Member')

class UserGroup_to_Member(models.Model):
    group = models.ForeignKey(UserGroup)
    member = models.ForeignKey(User)

    invited_by = models.ForeignKey(User, related_name="group_invited_users")
Run Code Online (Sandbox Code Playgroud)

好的,所以我做了一些你们提供的答案的组合(谢谢!)和我在互联网上找到的东西以及我自己公认的微薄的python-fu:

from django.contrib.auth.models import User

class UserGroup(models.Model):
    # notice there is no member object here
    ... other model data

    def add_member(self, **kwargs):
        g2m = UserGroup_to_Member(group = self,  **kwargs)
        g2m.save()

    def remove_member(self, member):
        g2m = UserGroup_to_Member.objects.get(group=self, member=member)
        g2m.delete()

    # This is not elegant at all, help please? I'm pretty sure it isn't
    # as bad …
Run Code Online (Sandbox Code Playgroud)

python django many-to-many foreign-keys

10
推荐指数
1
解决办法
2万
查看次数