В вашем TodoCreateSerializer
необходимо добавить PrimaryKeyRelatedField
с пользовательским queryset
, в котором есть отфильтрованные теги пользователя.
Во-первых, вам нужно создать пользовательский PrimaryKeyRelatedField
, который фильтрует любые объекты, чтобы получить доступ только к тем, кто принадлежит пользователю.
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)
(Это универсальный вариант, который можно использовать при фильтрации объектов по user
)
Тогда тебе следует использовать это в себе TodoCreateSerializer
:
class TodoCreateSerializer(serializers.ModelSerializer):
tags = UserFilteredPrimaryKeyRelatedField(queryset= Tag.objects, many=True)
class Meta:
model = models.Todo
fields = ('title', 'description', 'due_at', 'tags')