dim*_*rik 5 python sql django django-orm
我有很多模型以某种方式相互引用,例如:
港口指的是城市,而城市又指的是国家。然后在 django admin 我想在 list_display Ports 国家显示:
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
Run Code Online (Sandbox Code Playgroud)
所以基本上每个端口 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
Run Code Online (Sandbox Code Playgroud)