我有很多模型以某种方式相互引用,例如:
港口指的是城市,而城市又指的是国家。然后在 django admin 中我想在 list_display 端口国家中显示:
class Country(models.Model):
title = models.CharField()
class City(models.Model):
title = models.CharField()
country = models.ForeignKey(Country)
class Port(models.Model):
city = models.ForeignKey(City)
def __str__(self):
return self.city.county.title
所以基本上对于每个端口,django 都会生成更多查询。我假设 select_related
在这种情况下会以某种方式帮助我,但如何在模型中正确使用它?
最佳答案
您可以创建一个 PortManager
类并覆盖 get_queryset
方法并在模型中引用它:
class PortManager(models.Manager):
def get_queryset(self):
return super(PortManager, self).get_queryset().select_related()
class Port(models.Model):
city = models.ForeignKey(City)
objects = PortManager()
def __str__(self):
return self.city.country.title
关于python - 如何在django模型中选择相关的,所以它不会产生很多子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41035786/