Python 尝试基于嵌套模型foreignkey筛选django视图序列化程序

Python 尝试基于嵌套模型foreignkey筛选django视图序列化程序,python,django,django-rest-framework,django-views,Python,Django,Django Rest Framework,Django Views,我有一个django应用程序。在它里面,我有两个模型。其中一个是组,另一个是成员模型。然后成员模型有一个foriegnkey,即组模型。我序列化了模型,现在我正试图让api按我所希望的方式工作。我希望能够调用一个api,该api的末尾有一个组名,作为成员的筛选器传递,以便只返回组名的成员。我有两个网址。第一个返回每个组的所有成员,而我希望第二个只返回某个组的成员。我尝试了一些不同的建议,但没有一个是有效的。这是我在下面做的最后一件事。我将在下面添加我的代码 型号: class Group(mod

我有一个django应用程序。在它里面,我有两个模型。其中一个是组,另一个是成员模型。然后成员模型有一个foriegnkey,即组模型。我序列化了模型,现在我正试图让api按我所希望的方式工作。我希望能够调用一个api,该api的末尾有一个组名,作为成员的筛选器传递,以便只返回组名的成员。我有两个网址。第一个返回每个组的所有成员,而我希望第二个只返回某个组的成员。我尝试了一些不同的建议,但没有一个是有效的。这是我在下面做的最后一件事。我将在下面添加我的代码

型号:

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 
网址:

MemberListView
工作正常,但
MemberGroupListView
不工作


更新:

添加了序列化程序:

class GroupSerializer(serializers.ModelSerializer):
    class Meta:
        model = Group
        fields = ('name', 'description', 'user_count', 'status', 'image', 'created_by')

class MemberSerializer(serializers.ModelSerializer):
    class Meta:
        model = Member
        fields = ('group', 'user', 'host')

Url参数,例如您案例中的
name
path('members/',MemberGroupListView.as_view()),
)存储在基于类的视图中的
self.kwargs
,因此您的
get_queryset
应该是:

def get_queryset(self):
    return self.queryset.filter(group__name=self.kwargs.get('name'))

它是如何工作的?当我输入一个存在@RedCricket的组名时,它返回了一个空对象。我将在我的原始帖子中添加一张照片……什么是
self.request.query\params.get('name')
返回?所以,去掉
self.queryset.filter(gorup\uu name=…)
或者我如何测试你输入的代码@您需要确保
self.request.query\u params.get('name')
返回您期望的结果。打印出值或在调试器中运行代码。
class GroupSerializer(serializers.ModelSerializer):
    class Meta:
        model = Group
        fields = ('name', 'description', 'user_count', 'status', 'image', 'created_by')

class MemberSerializer(serializers.ModelSerializer):
    class Meta:
        model = Member
        fields = ('group', 'user', 'host')
def get_queryset(self):
    return self.queryset.filter(group__name=self.kwargs.get('name'))