Django: запрос для выбора экземпляров модели в отношении ManyToMany с использованием метода set () в сериализаторе - PullRequest
0 голосов
/ 23 марта 2020

У меня есть модель для тегов статьи:

class Tag(models.Model):
   tag_name = models.CharField(max_length=10)
   additional_info = models.CharField(max_length=80)

Моя Article модель имеет ManyToMany связь с Tag моделью.

class Article(models.Model):
    tag = models.ManyToManyField('Tag')

При написании статьи, Автор может выбрать столько тегов, сколько доступно. Теперь, чтобы сериализатор работал, я должен использовать метод set () в классе сериализатора.

Моя трудность заключается в написании запроса для извлечения тегов, выбранных при написании статьи. Я попробовал это, но он принимает все теги, включенные только из выбранных:

def update(self, instance, validated_data):
    instance.tag.set(Tag.objects.all())

Какой должен быть запрос для получения тегов, выбранных только при написании блога.

1 Ответ

0 голосов
/ 24 марта 2020

В DRF метод сериализатора update получает параметр validated_data, который содержит проверенную информацию, переданную в запросе на обновление.

Итак, вы, вероятно, могли бы получить теги статьи, выполнив что-то вроде: tags = validated_data['tag'], которое затем могли бы использовать в instance.tag.set(...).

...