0
我現在有在我的模型2相關的類:一UserProfile
類和FriendInvite
類models.py
如何在Django寧靜的響應中獲得不對稱的多對多自我關係以顯示雙方?
class UserProfile(models.Model):
user = models.OneToOneField(User)
username = models.TextField()
friends = models.ManyToManyField('self',through='FriendInvite',
symmetrical=False)
class FriendInvite(models.Model):
sender = models.ForeignKey(UserProfile,related_name='fi_sender')
invitee = models.ForeignKey(UserProfile,related_name='fi_invitee')
status = models.IntegerField(default=0)
def __str__(self):
return '%s invites %s' % (self.sender.username,self.invitee.username)
在serializers.py
:
from rest_framework import serializers
from myapp.models import UserProfile
class UserProfileSerializer(serializers.ModelSerializer):
class Meta:
model = UserProfile
而且在views.py
:
from rest_framework import generics
from myapp.models import UserProfile
from myapp.serializers import UserProfileSerializer
class UserProfileList(generics.ListAPIView):
queryset = UserProfile.objects.all()
serializer_class = UserProfileSerializer
我生成5個不同的用戶和3個不同的朋友關係。然而,當我從服務器接收到的JSON響應,只包括誰發送了邀請,沒有誰收到他們的那些用戶:
[{"id":1,"username":"U1","user":1,"friends":[5]},
{"id":2,"username":"U2","user":2,"friends":[]},
{"id":3,"username":"U3","user":3,"friends":[4]},
{"id":4,"username":"U4","user":4,"friends":[]},
{"id":5,"username":"U5","user":5,"friends":[2]}]
在這種情況下,U1發出了邀請U5,U3到U4和U5到U2。我怎樣才能爲用戶發送和接收邀請的結果?
你爲什麼要在'friends' M2M字段中設置'symmetrical = False'? 如果U1是U5的朋友,那麼U5不會是U1的朋友嗎? –
Django不會讓我通過模型的'through'參數/關係來定義對稱關係。 –