DRF - 仅适用于登录

时间:2016-01-17 17:48:25

标签: django-rest-framework

我有以下序列化程序:

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')

2 个答案:

答案 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。