CM0*_*491 5 django django-rest-framework
有没有办法限制DRF 可浏览 API中填充的字段(例如在下拉选择器或列表选择器中)?
下面是 DRF 如何向用户建议他应该选择的“项目”选择的图像示例。然而,登录的用户可能有权也可能无权访问这些项目,所以我想控制这里显示的内容!似乎默认行为是显示所有相关对象。
如果有一种方法可以链接这些字段中填充的对象,并根据函数进行设置,那将非常有用get_queryset()。
此页面似乎暗示这可能是可能的,我只是找不到如何做到这一点的示例: http: //www.django-rest-framework.org/api-guide/filtering/
小智 -1
我不完全理解你想要什么,但__in如果你需要只显示精确值,请尝试查询集过滤器的功能:
class PurchaseList(generics.ListAPIView):
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.
"""
to_show = [ "user1", "user2", "user3"]
queryset = Purchase.objects.all()
username = self.request.query_params.get('username', None)
if username is not None:
queryset = queryset.filter(purchaser__username__in=username)
return queryset
Run Code Online (Sandbox Code Playgroud)
您可以将您的值添加到 to_show 列表,如果 queryset 元素等于其中之一,那么它将显示。另外,如果您只想显示模型的某些字段,则需要编辑序列化器的fields参数:
class PurchaseList(serializers.ModelSerializer):
class Meta:
model = Purchase
fields = ('id', 'field1', 'field2', ...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1386 次 |
| 最近记录: |