gpt4 book ai didi

python - django-rest-framework : restrict RelatedField queryset according to request

转载 作者:太空宇宙 更新时间:2023-11-03 17:54:22 30 4
gpt4 key购买 nike

我有一个带有外键的模型

models.py

class B(models.Model):
user = models.ForeignKey(contrib.auth.User)

class A(models.Model):
b = models.ForeignKey(B)

serializers.py

class ASerializer(serializers.ModelSerializer):
class Meta:
model = A
fields = ['b']

views.py

class AViewSet(iewsets.ModelViewSet):
queryset = A.objects.all()
serializer_class = ASerializer

现在我想要的是将 A.b 值限制为当前登录用户拥有的 B 实例。

我知道如何在节省时强制执行该操作,但我只想在 browsable API interface 的下拉选项中显示相关查询集.

如果可以的话define a queryset argumentRelatedField 上,它是静态的,不能依赖于当前请求。

有什么想法吗?

最佳答案

那么您可以尝试覆盖序列化器的 init 中的查询集。类似的东西

def __init__(self, *args, **kwargs):
super(MySerializerClass, self).__init__(*args, **kwargs)
if self.context.get('request', None):
field = self.fields.get('b')
field.queryset = field.queryset.filter(user=request.user)

当前用户应可通过 self.context 访问。

关于python - django-rest-framework : restrict RelatedField queryset according to request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28693393/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com