【发布时间】:2020-07-05 09:36:38
【问题描述】:
我正在使用 Django Rest Framework 和 Swagger 创建一个私人消息应用程序来记录 API。我是这个框架的新手,我不确定 ListCreateAPIView 是否是正确的方法。我需要以下端点:
- 列出所有给定发送者和接收者的消息。
- 根据发件人和收件人发布消息。
- 删除给定发送者和接收者的消息。
我的问题是如何从 URL 中获取发送者 ID 和接收者 ID?
这是我的代码,欢迎对包括序列化程序和模型在内的每个部分进行任何更改。提前致谢。
class Message(models.Model):
sender = models.ForeignKey(
UserProfile, on_delete=models.CASCADE, related_name='sender')
receiver = models.ForeignKey(
UserProfile, on_delete=models.CASCADE, related_name='receiver')
message = models.CharField(max_length=1200)
createdAt = models.DateTimeField(auto_now_add=True)
is_read = models.BooleanField(default=False)
def __str__(self):
return self.message
class Meta:
ordering = ('createdAt',)
class MessageSerializer(serializers.ModelSerializer):
"""For Serializing Message"""
sender = serializers.SlugRelatedField(
many=False, slug_field='username', queryset=UserProfile.objects.all())
receiver = serializers.SlugRelatedField(
many=False, slug_field='username', queryset=UserProfile.objects.all())
class Meta:
model = Message
fields = ['sender', 'receiver', 'message', 'createdAt']
class MessageViewSet(ListCreateAPIView):
serializer_class = MessageSerializer
queryset = Message.objects.all()
def list(self, request, *args, **kwargs):
queryset = Message.objects.all()
serializer = MessageSerializer(queryset)
print(self.request.data)
print(kwargs)
return Response(serializer.data)
router = DefaultRouter()
router.register('messages', MessageViewSet.as_view(), basename='messages')
urlpatterns = [
path('', include(router.urls)),
]
【问题讨论】:
-
如果以下答案帮助您投票并接受它作为答案。
标签: python django django-rest-framework