在Django自行管理多个油田

在Django自行管理多个油田,django,many-to-many,Django,Many To Many,我有以下型号: class MyUser(User): # some fields... contact = models.ManyToManyField("self", through='Contact', symmetrical=False, related_name="contact_set" ) class Contact(models.Model): user1 = models.ForeignKey( MyUser, related_name="conta

我有以下型号:

class MyUser(User):
    # some fields...
    contact = models.ManyToManyField("self", through='Contact', symmetrical=False, related_name="contact_set" )


class Contact(models.Model):
    user1 = models.ForeignKey( MyUser, related_name="contact_set1")
    user2 = models.ForeignKey( MyUser, related_name="contact_set2")
    confirmed = models.BooleanField()
并使用此视图创建联系人

def add_contact( request, username=None ):
    if username:
        try:
            user = MyUser.objects.get(username=username)
        except User.DoesNotExist:
            user = None

    if user:
        contact = Contact( user1 = MyUser.objects.get(pk=request.user.id), user2=user, confirmed=False )
        contact.save()
        return render_to_response( "accounts/add_contact.html", {'user': user,} )
    else:
        return HttpResponseRedirect("/home")

def list_contacts( request, username=None ):
    if username:
        try:
            user = MyUser.objects.get(username=username)
        except User.DoesNotExist:
            user = None
    else:
        user = MyUser.objects.get(pk=request.user.id)

    if user:
        contacts = user.contacts.all()
        return render_to_response("accounts/list_contacts.html", {'contacts': contacts,} )
    else:
        return HttpResponseRedirect("/home")
好了,现在。。。代码应该足够详细,所以我将简要地解释一下:社交网络,用户将其他人添加到他们的联系人(“朋友”、“好友”,不管你怎么称呼它)。如果用户A添加了用户B,B也会与A联系

代码是有效的。。。但这只是单向的。如果我以用户A的身份登录,并希望将用户B添加到我的联系人中,B将显示在我的联系人列表中,但不是相反。但我也想在B的联系人名单上出现——应该没有区别,谁加谁。我该怎么办呢?

。文档说传递“self”(作为字符串)

还有,看看这个

祝你好运。我希望你在发展中取得成功。

。文档说传递“self”(作为字符串)

还有,看看这个


祝你好运。我希望你能在发展中取得成功。

Ref:你的评论。嘘,你当然是对的。我正在删除我的答案。在我的用户模型中,联系人字段定义中使用symmetric=True,应该使其双向正确吗?。为什么将Symmetric设置为False?因为它在文档中说:“当使用中间模型定义从模型到自身的多对多关系时,必须使用symmetric=False”-Ref:您的注释。嘘,你当然是对的。我正在删除我的答案。在我的用户模型中,联系人字段定义中使用symmetric=True,应该使其双向正确吗?。为什么将Symmetric设置为False?因为它在文档中说:“当使用中间模型定义从模型到自身的多对多关系时,必须使用Symmetric=False”--