我想要两个外键到同一个模型:
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告诉我这是一个暧昧和违反规则(这是有道理的).
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)