如何在 Django ORM 查询中包含来自外键对象的数据?
How to include data from foreign key object in Django ORM query?
我试图在我的数据库中查询一个对象,并从另一个共享外键关系的对象获取数据。
例如,如果我有这些模型:
class Book(models.Model):
language = models.ForeignKey('Language')
...
class Language(models.Model):
name = models.CharField(max_length=255, unique=True)
我想查询这些模型并获得图书的 QuerySet,然后通过 API return 图书。
在原始 SQL 中,我会做类似的事情:
SELECT book, language.name
FROM book
JOIN ....
有什么方法可以用 Django ORM 来完成这个吗?
如果您使用的是 API 的 django rest 框架,您可以使用序列化程序方法字段
class BookSerializer(serializers.ModelSerializer):
language = serializers.SerializerMethodField()
class Meta:
model = Book
fields = ['id', 'language']
def get_language(self,obj)
return obj.language.name
另一种方法是将 属性 字段添加到图书模型
@property
def language(self):
return self.language.name
现在如果你这样做book_obj.language,你可以得到语言模型中的名字
我试图在我的数据库中查询一个对象,并从另一个共享外键关系的对象获取数据。
例如,如果我有这些模型:
class Book(models.Model):
language = models.ForeignKey('Language')
...
class Language(models.Model):
name = models.CharField(max_length=255, unique=True)
我想查询这些模型并获得图书的 QuerySet,然后通过 API return 图书。
在原始 SQL 中,我会做类似的事情:
SELECT book, language.name
FROM book
JOIN ....
有什么方法可以用 Django ORM 来完成这个吗?
如果您使用的是 API 的 django rest 框架,您可以使用序列化程序方法字段
class BookSerializer(serializers.ModelSerializer):
language = serializers.SerializerMethodField()
class Meta:
model = Book
fields = ['id', 'language']
def get_language(self,obj)
return obj.language.name
另一种方法是将 属性 字段添加到图书模型
@property
def language(self):
return self.language.name
现在如果你这样做book_obj.language,你可以得到语言模型中的名字