我有以下序列化程序:
class WidgetSerializer(serializers.ModelSerializer):
owner = serializers.HiddenField(default=serializers.CurrentUserDefault())
class Meta:
model=Widget
fields = ('id', 'title', 'description', 'username', 'code', 'owner', 'list')
问题是'list'字段是一个下拉列表,它给出了所有列表,而我只希望它显示当前登录用户所拥有的列表。
以下是各自的模型:
class WidgetList(MPTTModel):
name = models.CharField(max_length=100)
description = models.CharField(max_length=1024)
owner = models.ForeignKey('MyUser')
parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)
def __str__(self):
return self.name
class MPTTMEta:
order_insertion_by = ['name']
class Widget(models.Model):
title = models.CharField(max_length=100)
description = models.CharField(max_length=1024)
username = models.CharField(max_length=50)
code = models.CharField(max_length=1024)
owner = models.ForeignKey('MyUser', related_name='MyUser_owner')
list = models.ForeignKey('WidgetList')
答案 0 :(得分:1)
我是django的初学者。我希望我能提供帮助。
试试吧
WidgetList.objects.filter(owner=request.user)
答案 1 :(得分:0)
我必须根据此处的文档通过SlugRelatedField限制它 -
http://www.django-rest-framework.org/api-guide/relations/#slugrelatedfield
然后我就这样使用了它 -
list = serializers.SlugRelatedField(
queryset=WidgetList.objects.filter(owner=3),
many=True,
slug_field='name'
)
现在我需要弄清楚的是在查询集的过滤器中传递serializers.CurrentUserDefault(),或者传递request.user。