【发布时间】:2017-11-25 05:50:03
【问题描述】:
我有这个项目,我需要从视图中的多个模型中获取多个对象。我可以通过 for 循环来做到这一点,但我认为我不应该在每个循环中都访问数据库。我应该使用prefetch_related。或者我是否应该知道其他方法来检索它们。
例如:
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 将没有用。有什么建议。
【问题讨论】:
-
尝试使用属性
-
是的,您应该使用
prefetch_related。没有比这更好的办法了 -
@Gahan 你能告诉我如何使用属性
-
@SardorbekImomaliev 我试过
prefetch_related,我不能完全按照我的意愿去做,我做了一个类似 B.objects.get(user=request.user).prefetch_related 的查询('id') -
看这个:stackoverflow.com/questions/3046398/… 你可以在类中实现你想在视图中调用的函数,在属性中你可以使用函数来获取相关值到你的模型