【发布时间】:2014-10-27 13:57:59
【问题描述】:
我有一个模型WeddingInvite,它有一个拒绝和接受邀请的方法,如下所示:
class WeddingInvite(models.Model):
from_user=models.ForeignKey(User,related_name="person_inviting")
to_user=models.ForeignKey(User,related_name="person_invited")
wedding=models.ForeignKey(Wedding,related_name="wedding_invite")
status=models.IntegerField(choices=CHOICES)
def accept(self):
attending=Attending(attendant=to_user,wedding=Wedding)
attendant.save()
self.status=1
self.save()
notification.send([self.to_user],"invite_accepted",{"invitation":self})
def decline(self):
self.status=2
self.save()
如何将方法公开给视图或序列化程序,以便人们可以接受或拒绝 通过 django-rest-framework 以便它可以作为 json 传递? 下面是序列化器和视图:
class WeddingInviteList(generics.ListCreateAPIView):
serializer_class=WeddingInviteSerializer
def list(self,request,*args,**kwargs):
wedding_invites=[]
invited=request.user
qs=WeddingInvite.objects.filter(Q(to_user=invited))
for invite in qs:
wedding_invites.append({invite.from_user,"invited you to a wedding ",invite.wedding})
return Response(wedding_invites)
class WeddingInviteSerializer(serializers.ModelSerializer):
class Meta:
model=WeddingInvite
如何在视图或序列化程序中启用接受和拒绝方法?
编辑:我意识到有一个序列化方法字段,但它返回一个值。我不知道这是否可以使用,因为我的方法与此示例不同 serializer method field
关于这个或任何其他方式的正确方向会非常有帮助。
【问题讨论】:
-
WeddingInvite模型的ModelSerializer和接受 POST 或 PUT 请求的APIView怎么样,如果序列化程序有效,则调用该方法?您还需要一个 get_object 方法来检索特定的WeddingInvite。 -
我知道我必须调用 get_object 方法,但是 accept 方法呢?我只是做一个 self.accept 接受和 self.decline 拒绝。另外我如何定义网址
标签: python django rest django-rest-framework