0
我有這樣的模式:使用與用戶匹配的兩個條件之一過濾查詢集。 Django的REST框架
class MessageViewSet(viewsets.ModelViewSet):
queryset = Message.objects.all()
serializer_class = MessageSerializer
,當然還有,它返回的每封郵件。
發送消息是這樣的模式:
class Message(models.Model):
created = models.DateTimeField(auto_now_add=True)
type = models.CharField(_('type'), choices=MESSAGE_TYPE, default='Invitation', max_length=100)
content = models.TextField(_('content'), blank=False)
sender = models.ForeignKey(User, related_name='sender_message', verbose_name=_("Sender"),)
recipient = models.ForeignKey(User, related_name='receiver_message', null=True, blank=True,
verbose_name=_("Recipient"))
url_profile_image = models.URLField(_('url_profile_image'), max_length=500, blank=True, default='')
class Meta:
ordering = ('created',)
和串行是這樣:
class MessageSerializer(serializers.ModelSerializer):
sender = serializers.ReadOnlyField(source='sender.uuid')
recipient = serializers.ReadOnlyField(source='recipient.uuid')
class Meta:
model = Message
fields = ('url', 'id', 'type', 'content', 'sender', 'recipient', 'url_profile_image')
只想,如果用戶是發送方或接收方的查詢集返回消息。
我這個嘗試:
filter_backends = filters.DjangoFilterBackend
filter_fields = ('recipient', 'sender')
但它不工作,也許,因爲我不知道在哪裏比較。
不錯。但是我必須讓這個'''queryset = Message.objects.all()'''儘管。不是嗎? 我的意思是,我讓它,它的作品。當我把它拿走時,我得到一個錯誤。 (你知道它爲什麼會發生嗎?) 謝謝! –
@ChuckAguilar - 我不記得在這一刻,我沒有任何消息來源在我面前,所以不記得你收到了什麼錯誤 – Sayse
'''assert queryset不是None,'base_name'參數沒有指定,並且'\ AssertionError:'base_name'參數未指定,並且無法自動確定視圖中的名稱,因爲它沒有'.queryset'屬性。 ''' 但是沒關係,我的意思是,當我讓查詢集像get_query一樣使用get_query函數時,它可以很好地工作。 –