我的应用程序和模型设置如下。
申请表A:
此应用程序已经预先填充了将要使用的数据 通过项目中的一些应用程序,所以我不想拥有 这些数据重复。
models.py
class Countries(models.Model):
name = models.CharField(max_length=100)
country_code = models.PositiveSmallIntegerField()
class Region(models.Model):
name = models.CharField(max_length=100)
country_name = models.ForeignKey(Countries)
class Cities(model.Model):
name = models.CharField(max_length=100)
country_name = models.ForeignKey(Countries)
region_name = ChainedForeignKey(
Regions,
chained_field="country_name",
chained_model_field="country_name",
show_all=False,
auto_choose=False,
)
申请表B:
我希望扩展应用程序A中的模型,以便我可以添加 项目主要部分将使用的其他字段。 我理解如何从应用程序A扩展模型,但不确定 如何正确地做到这一点,以便应用程序C也正常工作。 这些表中只应包含额外的字段。我不想复制 应用程序A中的数据。
申请C - 项目的主要部分:
在这里,我想使用ForeignKey / ChainedForeignKey来选择位置 并改善位置。选择国家/地区后,它只会显示给您 该国家/地区的可用区域。一旦你选择了Region 您只会看到这些地区的城市。我用过ChainedForeignKey 之前,所以我对此很熟悉。
此处的选择应基于应用程序B中的模型。 将根据需要启用地区和城市。
我现在有什么。 申请A如上所示。
申请表B:
class BaseLocation(models.Model):
searchable = models.BooleanField('Searchable', default=True, help_text='Enables or Disables item for searching.')
hidden = models.BooleanField('Hidden', help_text='Allows you to create searches without showing the item on the search page.')
default = models.BooleanField('Default', help_text='Sets the default that will be used in forms.')
enabled = models.BooleanField('Enabled', help_text="Enables or Disables item.", default=False)
deprecated = models.BooleanField('Deprecated', help_text='Item should no longer be used.')
class Meta:
abstract = True
class Country(BaseLocation):
country = models.ForeignKey(Countries, unique=True)
class Region(BaseLocation):
country = models.ForeignKey(Country, to_field='country')
region = ChainedForeignKey(
Regions,
chained_field='country',
chained_model_field='country_name',
show_all=False,
auto_choose=True,
)
class City(BaseLocation):
country = models.ForeignKey(Country, to_field='country')
region = ChainedForeignKey(
Regions,
chained_field='country',
chained_model_field='country_name',
show_all=False,
auto_choose=True,
)
city = ChainedForeignKey(
Cities,
chained_field='region',
chained_model_field='region_name',
show_all=False,
auto_choose=True,
)
申请C:
class Property(models.Model):
property_listing = models.CharField(max_length=50)
country = models.ForeignKey(Country, to_field='country')
region = ChainedForeignKey(
Region,
chained_field='country',
chained_model_field='country',
show_all=False,
auto_choose=True,
)
city = ChainedForeignKey(
City,
chained_field='region',
chained_model_field='region',
show_all=False,
auto_choose=True,
)
应用程序C的问题是我可以在国家/地区进行查找,但是当引用应用程序B或A时,不会填充区域和城市。由于额外的字段,我需要它来使用应用程序B.已添加到模型中。
不确定我正在寻找的是否真的可以完成。
如果有人对如何做到这一点有任何想法,我会很感激。
答案 0 :(得分:0)
解决。问题是我没有为__unicode__
的模型返回正确的值,但是在我尝试使用smartselect用于查找的URL之前没有明确的错误消息。