【发布时间】:2014-05-30 09:04:16
【问题描述】:
我与一个模型 City 有一个 ManyToMany 关系,并且它有一个带有 State 的外键字段。我正在尝试让 Django 管理字段小部件包含州名称,以便它可以自动完成(因为我们的 Django 项目中有 数千个 城市)。
我想在城市__unicode__ 中添加state.name,如下所示:
class State(models.Model):
name = models.CharField(max_length=100)
class City(models.Model):
name = models.CharField(max_length=100)
state = models.ForeignKey(State)
def __unicode__(self):
return u'(%s) %d. %s' % (self.state.name, self.id, self.name)
class Person(models.Model):
cities_lived_in = models.ManyToManyField(City, null=True, blank=True)
但这会使加载时间增加一分钟多:从 4 秒增加到 1.6 分钟。
我想知道是否有一种不那么冗长的方法可以将状态名称添加到 Django 的 manytomany 小部件中。我知道我也可以更改模型形式,但我认为如果不是更糟的话,它会产生相同的结果,因为它会查找所有城市,然后迭代它们,然后查找所有相关的州。
【问题讨论】:
-
我使用 Django 1.6,使用 Manager 和“withState”。但是没有它,当 Unicode():
匹配查询中的外键字符串不存在时,我会收到错误消息。奇怪。
标签: python django many-to-many