[英]django - values() for foreign key relations
Django values() is very handy, is it possible to serialize nested object too? Django values()非常方便,是否也可以序列化嵌套对象?
class Book(model.Models):
name = models.CharField(max_length=50)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
I would hope to do something like 我希望做这样的事情
d = Book.objects.all().values('name', 'user', deep={
'user': ['username', 'first_name', 'last_name'] # related user fields
})
And to get a result 并得到结果
[
{
'name': 'book1',
'user': {'username': 'user1', 'first_name': '...', 'last_name': '..'}
}
]
So I'll get a nested dict for the foreign key object (user), instead of just the user id. 因此,我将获得外键对象(用户)的嵌套字典,而不仅仅是用户ID。 I don't need more than a depth of 1, so only one level of related objects.
我不需要超过1的深度,因此只需一层相关对象。
I would suggest Django RestFrameWork for efficient use. 我建议有效利用Django RestFrameWork 。 Define your
serializers.py
as below, 如下定义您的
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')
and try this in your view/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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.