Обратное отношение внешнего ключа в сериализаторах django
Могу ли я сохранить данные в django в обратном отношении внешнего ключа.
Предположим, что у меня есть модели,
class Author(models.Model):
author_id = models.SlugField(default=None, blank=True)
author_name = models.CharField(max_length=200)
class Article(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
article_title = models.CharField(max_length=200)
content = models.CharField(max_length=200)
Предположим, я хочу сохранить все статьи с данными об их авторах, какой тип сериализатора я должен использовать. Я получаю данные в такой форме:
article_data =[
{
"title":"ome title",
"content":"content",
"author":{
"author_id":"2",
"author_name":"some name",
}
},
{
"title":"ome title",
"content":"content",
"author":{
"author_id":"2",
"author_name":"some name",
}
}
]
Как я должен написать свой сериализатор для сохранения таких данных. Я не хочу писать файл логических представлений. Я не хочу перебирать все мои статьи, а затем сохранять статью и автора отдельно, используя два сериализатора. Я хочу вызвать один сериализатор и передать ему весь список:
saveArticleAndAuthor(article_data, many=True)
сериальщик должен сохранить данные автора в таблице author, а остальные данные в таблице article.
вам нужно два класса в serializer.py
class Author_serializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = ["author_id", "author_name"]
и второй должны быть в разделе Author_serializer
class saveArticleAndAuthor_serializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = ["author", "article_title", "content"]
author = Author_serializer()
в views.py вы используете только saveArticleAndAuthor_serializer и он сериализует Author_serializer как "глубину второго уровня"