我正在学习如何在我的项目中使用Django Rest框架,但我对下面的代码感到困惑
serializer_class = PurchaseSerializer
def get_queryset(self):
"""
Optionally restricts the returned purchases to a given user,
by filtering against a `username` query parameter in the URL.
"""
queryset = Purchase.objects.all()
username = self.request.query_params.get('username')
if username is not None:
queryset = queryset.filter(purchaser__username=username)
return queryset在这段代码中,purchaser__username=username是什么意思?现在我有点糊涂了。
发布于 2022-06-23 03:11:38
queryset过滤器中的双下划线通常意味着您正在跟踪不同模型之间的某种关系。
在这种情况下,您有一个模型购买,而该模型有一个字段“购买者”。“购买者”字段可能是与另一种模型(如用户)的多对一链接(因为购买可以有一个购买者,但用户可能会进行许多购买)。用户模型有一个字段'username',可能是一个简单的字符串。
因此,queryset.filter的意思是,获取采购模型中引用特定用户的所有实例。若要判断哪个特定用户,请将用户的“用户名”字段(purchaser__username)与URL (即,get_queryset.html?username=fred123)中的用户名字符串匹配
https://stackoverflow.com/questions/72723631
复制相似问题