我有一个表,它关联两个表,表Author和表Book。
+----+------------+-----------+
| ID | Author(FK) | Book (FK) |
+----+------------+-----------+
| 1 | 20 | 12 |
| 2 | 20 | 35 |
| 3 | 20 | 70 |
| 4 | 25 | 15 |
+----+------------+-----------+
我正在使用一个序列化程序,我的输出如下所示:
{
"1": {
"Author": "20",
"Book": "12"
},
"2": {
"Author": "20",
"Book": "35"
},
"3": {
"Author": "20",
"Book": "70"
},
"4": {
"Author": "25",
"Book": "15"
},
}
期望的输出将如下所示:
[
{
"author": 20,
"books": [
12,
35,
70
]
},
{
"author": 25,
"books": [
15
]
}
]
这是我的序列化程序:
class AuthorBooksSerializer(serializers.ModelSerializer):
class Meta:
model = AuthorBooks
fields = '__all__'
我应该怎么做才能将作者的所有书籍合并到一个数组中?
发布于 2021-05-01 16:12:17
使用DRF's PrimaryKeyRelatedField,您可以像这样改进您的AuthorBooksSerializer
:
from .models import Book, Author, AuthorBooks
class AuthorBooksSerializer(serializers.ModelSerializer):
author = serializers.PrimaryKeyRelatedField(read_only=True, queryset=Author.objects.all())
books = serializers.PrimaryKeyRelatedField(many=True, read_only=True, queryset=Book.objects.all())
class Meta:
model = AuthorBooks
fields = '__all__'
奖金
您可以只使用Book
模型上的ForeignKey
属性来实现AuthorBooks
的Many to One relationship
,而不是定义一个单独的模型SQL,
from django.db import models
class Book(models.Model):
# ...snip...
author = models.ForeignKey(Book, related_name="books", on_delete=models.CASCADE)
然后,您可以进行如下查询:
Book.objects.get(1).author # related author instance
Author.objects.get(1).books # list of books
https://stackoverflow.com/questions/67304053
复制相似问题