gpt4 book ai didi

python - 从 django-notifications-hq 序列化 NotificationQuerySet 不起作用

转载 作者:行者123 更新时间:2023-11-28 18:38:38 26 4
gpt4 key购买 nike

因此,我正在尝试将通知模型添加到我使用 DRF(Django REST 框架)制作的 API 中,但出现此错误:

AttributeError: 'NotificationQuerySet' 对象没有属性 'recipient'

我正在尝试序列化一个 Django 应用程序模型,Notification。它来自这个应用程序:

https://github.com/django-notifications/django-notifications

我的 ViewSet 类是这样的:

class NotificationsViewSet(viewsets.ViewSet):
serializer_class = NotificationsSerializer
def list(self, request):
queryset = Notification.objects.all()
return Response(NotificationsSerializer(queryset).data)

这是我的序列化程序:

class NotificationsSerializer(serializers.ModelSerializer):
class Meta:
model = Notification
fields = ('recipient','description')
depth = 0

因此,当数据传递给序列化程序时,它变为“无效”或没有任何数据。在 list 方法中做一些类似的事情:

print queryset[0] 正常返回一个 Notification 对象。但是当将这个查询集传递给序列化程序时,似乎为空,并且出现了 AttributeError。

另外,在控制台上试过这个:

notifications = Notification.objects.all()

返回一个 NotificationQuerySet 对象(可迭代)。然后我可以:

for noti in notifications:
print noti

这将输出每个通知的所有 unicode 方法。对于每个通知实例,我还可以访问模型属性:

for noti in notifications:
print noti.recipient

而且效果很好。

为什么在将其传递给序列化程序时不起作用?这很奇怪......

最佳答案

在使用查询集初始化序列化程序时,您需要传递 many=True。 DRF 会假定您传递的是单个对象,如果您没有告诉它您传递的是多个对象,它会尝试直接从中获取字段。

关于python - 从 django-notifications-hq 序列化 NotificationQuerySet 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29773398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com