syn*_*nic 10 django-rest-framework
为了具有非只读PrimaryKeyRelatedField,您需要提供包含有效选项的查询集.
如何根据当前请求(用户)正确填充该查询集?
Myk*_*lis 44
关键是使用请求上下文中的用户信息PrimaryKeyRelatedField对get_queryset方法进行子类化和重载:
class UserFilteredPrimaryKeyRelatedField(serializers.PrimaryKeyRelatedField):
def get_queryset(self):
request = self.context.get('request', None)
queryset = super(UserFilteredPrimaryKeyRelatedField, self).get_queryset()
if not request or not queryset:
return None
return queryset.filter(user=request.user)
Run Code Online (Sandbox Code Playgroud)
然后,您可以像(未过滤的)原始文件一样使用此新的序列化程序:
class MySerializer(serializers.ModelSerializer):
related = UserFilteredPrimaryKeyRelatedField(queryset=MyModel.objects)
Run Code Online (Sandbox Code Playgroud)
每当序列化程序访问查询集时,它都将被过滤,以便只返回当前用户拥有的对象.
| 归档时间: |
|
| 查看次数: |
4847 次 |
| 最近记录: |