【发布时间】:2018-05-09 18:52:38
【问题描述】:
我有 2 个模型,Todo 和一个 Tag。 Todo 与 Tag 具有多对多关系。当从 Browsable API 添加新的 Todos 时,我希望能够只看到当前用户添加的标签作为多选中的可用选项。目前,它显示所有添加的标签,无论是谁添加的。我想将选项限制为仅显示当前用户添加的标签。 (已设置身份验证)
模型:
class Todo(models.Model):
title = models.CharField(max_length=100)
description = models.TextField(blank=True)
created_at = models.DateTimeField(auto_now_add=True)
due_at = models.DateTimeField(blank=True)
updated_at = models.DateTimeField(auto_now=True)
tags = models.ManyToManyField(Tag, related_name='todos')
creator = models.ForeignKey(User, on_delete=models.CASCADE, related_name='todos')
class Tag(models.Model):
name = models.CharField(max_length=20)
creator = models.ForeignKey(User, on_delete=models.CASCADE, related_name='created_tags')
def __str__(self):
return self.name
序列化器:
class TodoCreateSerializer(serializers.ModelSerializer): #This is the one being used for a POST
class Meta:
model = models.Todo
fields = ('title', 'description', 'due_at', 'tags')
是否有一些序列化器字段或其他方式来指定在序列化器中使用哪个查询集?还有其他更好的方法吗?
【问题讨论】:
标签: python django django-models django-rest-framework