Django values()非常方便,是否也可以序列化嵌套对象?
class Book(model.Models):
name = models.CharField(max_length=50)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
我希望做一些像
这样的事情d = Book.objects.all().values('name', 'user', deep={
'user': ['username', 'first_name', 'last_name'] # related user fields
})
获得结果
[
{
'name': 'book1',
'user': {'username': 'user1', 'first_name': '...', 'last_name': '..'}
}
]
因此,我将获得外键对象(用户)的嵌套字典,而不仅仅是用户ID。 我不需要超过1的深度,因此只需要一个级别的相关对象。
答案 0 :(得分:1)
我建议Django RestFrameWork有效使用。定义您的serializers.py
,如下所示,
from rest_framework.serializers import ModelSerializer
class UserSerializer(ModelSerializer):
class Meta:
model = User
fields = ('username', 'first_name', 'last_name')
class BookSerializer(ModelSerializer):
user = UserSerializer()
class Meta:
model = Book
fields = ('name', 'user')
并在你的视图/ shell中尝试这个
book = Book.objects.get(id=1)
result = BookSerializer(book).data
OR
all_book_objects = Book.objects.all()
result = BookSerializer(all_book_objects, many=True).data