Django休息免费工作:在序列化程序中获取路径参数

icnyk63a  于 2023-03-20  发布在  Go
关注(0)|答案(1)|浏览(98)

我使用以下路径请求服务:

/api/story_step/<chatbot>/<story_name>/

在合适的Django串行化器中,我有以下字段:

interaction_name = serializers.CharField(source='interaction.name', read_only=True)

它是对另一个表字段的引用:

interaction = models.ForeignKey('interactions.Interaction', models.CASCADE, 'story_interaction', 'story_interaction')

有没有办法通过path参数过滤该字段,以便只看到定义的聊天机器人的交互?
我的意思是,在swagger用户界面出现以下字段:

在这个列表中显示了所有的交互,来自聊天机器人和其他人。

omqzjyyz

omqzjyyz1#

如果我没理解错的话,您需要使用路径参数<chatbot>query_name来过滤模型以显示交互作用。

class YourAPI(ListAPIView):
    serializer_class = YourSerializer
    model = YourModel

    def get_queryset(self):
        chatbot = self.kwargs.get('chatbot')
        story_name=self.kwargs.get('story_name')
        return self.model.objects.filter(chatbot=chatbot,story_name=story_name)

我不知道您的串行器和模型的名称,所以请用它们替换serializer_classmodel。这将根据您的路径参数过滤模型,并显示相关的interaction字段结果。当然,您可以只使用其中一个参数进行过滤。这取决于您的代码逻辑(我假设您两者都需要)。您也可以使用其他视图类或视图集,它们提供类似的get功能。

相关问题