我有这个项目,我需要从视图中的多个模型中获取多个对象。我可以通过for循环来做到这一点,但我想我不应该在每个循环中命中数据库。我应该使用class A(models.Model):
title_name=models.CharField(...)
id=models.AutoField(pk=True)
class B(models.Model):
user=models.ForeignKey(User,models.ON_CASCADE=True)
user_status=models.CharField(...)
id=models.ForeignKey(A, models.ON_CASCADE=True)
吗?或者我应该知道一些其他方法来检索它们。
例如:
user_status, user
我需要显示title_name
和关联的select_related
。我得到多个对象,waitForReadyRead()
没用。有什么建议。
答案 0 :(得分:1)
您需要创建此查询集:
B.objects.all().select_related('user', 'id')
此查询集将生成连接用户的SQL和来自db
的A数据接下来,在模型B中制作一个属性:
@property
def title_name(self):
return self.id.title_name
最后,您将获得对数据库发出一个SQL请求的queryset,并返回您需要的所有数据。
顺便说一句,我会重命名属性" id"在模型B到" a"。