Django Rest Framework - URL'ye göre filtreleme - get () beklenmedik bir anahtar kelime argümanı 'username' aldı
Aug 18 2020
Bir django modelim var Messages
ve mesajları bir url parametresine göre filtrelemek istiyorum: mesajın yazarının kullanıcı adı.
Ama anlıyorum:
TypeError at /inbox-data/johndoe/
get() got an unexpected keyword argument 'username'
url(r'^inbox-data/(?P<username>.+)/$', InboxApiView.as_view())
class InboxApiView(ListAPIView):
def get(self, request, format=None):
url_param = self.kwargs['username']
own_mx = Message.objects.filter(sender__username=url_param)
mx_serializer = MXSerializer(own_mx, many=True)
message_data = mx_serializer.data
data = {
'message_data':
[{
'content' : md['content'],
'sender' : md['sender'],
'recipient' : md['recipient'],
'sent_at' : md['sent_at'],
'read_at' : md['read_at']
} for md in message_data],
}
return Response(data)
class MXSerializer(ModelSerializer):
sender = SerializerMethodField()
recipient = SerializerMethodField()
class Meta:
model = Message
fields = '__all__'
def get_sender(self,obj):
return str(obj.sender.username)
def get_recipient(self,obj):
return str(obj.recipient.username)
Bu dokümantasyonu takip ediyorum:
https://www.django-rest-framework.org/api-guide/filtering/#filtering-against-the-url
Traceback (most recent call last):
File "/Library/Python/3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/Library/Python/3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/Library/Python/3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Library/Python/3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "/Library/Python/3.7/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/Library/Python/3.7/site-packages/rest_framework/views.py", line 505, in dispatch
response = self.handle_exception(exc)
File "/Library/Python/3.7/site-packages/rest_framework/views.py", line 465, in handle_exception
self.raise_uncaught_exception(exc)
File "/Library/Python/3.7/site-packages/rest_framework/views.py", line 476, in raise_uncaught_exception
raise exc
File "/Library/Python/3.7/site-packages/rest_framework/views.py", line 502, in dispatch
response = handler(request, *args, **kwargs)
Önerileriniz için teşekkürler
Yanıtlar
2 Lewis Aug 18 2020 at 19:50
Sen eklemeniz gerekir *args
ve **kwargs
sizin de InboxApiView
sınıf get
yöntemiyle.
Şöyle:
def get(self, request, format=None, *args, **kwargs):
[...]
Bu olmadan username
anahtar kelime argümanlarından çıkarılamaz.
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'