在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”--