У меня есть проект django с фреймворком django rest. Я пытаюсь использовать Retreive API View для возврата сведений об участниках. Я хочу получить все записи о членах на основе параметра, который передается в URL с именем группы. Я пытался использовать .get()
и .filter()
. .get()
вернул error of returning more than 2 items
. .filter()
не является частью диктата.
Я пытался .list
и .retrieve
Как я могу получить объекты данных, основанные на более чем 1 элементе. Вот мой взгляд, которому я призываю.
class MemberDetailView(RetrieveAPIView):
queryset = Member.objects.all()
serializer_class = MemberSerializer
def get_object(self):
return self.queryset.filter(group__name=self.kwargs.filter('name'))
модель
class Member(models.Model):
group = models.ForeignKey(Group, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
host = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.group.name + ' - ' + self.user.username
1018 * URLs *
path('members/', MemberListView.as_view()),
path('members/<name>', MemberDetailView.as_view()),
_________________________________________-
UPDATE:
, поэтому я получаю сообщение об ошибке при переопределении списка:
TypeError at /api/groups/members/homiez
list() got an unexpected keyword argument 'name'
когда я не перезаписываю список, я получаю пустой объект результатов.
Вот код, который у меня есть сейчас ...
class MemberGroupListView(ListAPIView):
serializer_class = MemberSerializer
def get_queryset(self):
return Member.objects.filter(group__name=self.request.query_params.get('name'))
def list(self, request):
# Note the use of `get_queryset()` instead of `self.queryset`
queryset = self.get_queryset()
serializer = MemberSerializer(queryset, many=True)
return Response(serializer)
модели
class Group(models.Model):
name = models.CharField(max_length=42)
description = models.CharField(max_length=220)
user_count = models.IntegerField()
status = models.CharField(max_length=12)
image = models.ImageField(upload_to='group_images/')
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name + ' - ' + self.created_by.username
class Member(models.Model):
group = models.ForeignKey(Group, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
host = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.group.name + ' - ' + self.user.username
URLs:
path('members/<name>', MemberGroupListView.as_view()),