获取Django Admin中的状态下拉列表
我为一家企业的上市制作了一些基本模型,如下所示:获取Django Admin中的状态下拉列表,django,django-admin,Django,Django Admin,我为一家企业的上市制作了一些基本模型,如下所示: class Business(models.Models): id = models.IntegerField(primary_key=True) name = models.CharField(max_length=225, blank=True) address = models.CharField(max_length=150, blank=True) city = models.CharFiel
class Business(models.Models):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=225, blank=True)
address = models.CharField(max_length=150, blank=True)
city = models.CharField(max_length=150, blank=True)
state_id = models.IntegerField(null=True, blank=True)
zip = models.CharField(max_length=33, blank=True)
country = models.CharField(max_length=150, blank=True)
url = models.CharField(max_length=765, blank=True)
class States(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=96)
state_abbr = models.CharField(max_length=24, blank=True)
在管理中,当我编辑每个业务时,它会显示state_id字段。但我如何将它与状态模型连接起来,以显示状态的选择下拉列表呢
另外,如何从企业的角度显示州缩写 您需要使用ForeignKey字段。 进行以下更改
class Business(models.Models):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=225, blank=True)
address = models.CharField(max_length=150, blank=True)
city = models.CharField(max_length=150, blank=True)
#state_id = models.IntegerField(null=True, blank=True)
# Define a new state field that creates a ForeignKey relationship with States
state = models.ForeignKey('States', null=True, blank=True)
zip = models.CharField(max_length=33, blank=True)
country = models.CharField(max_length=150, blank=True)
url = models.CharField(max_length=765, blank=True)
class States(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=96)
state_abbr = models.CharField(max_length=24, blank=True)
#Define the __unicode__ method, which is used by related models by default.
def __unicode__(self):
return self.state_abbr
默认情况下,在数据库中创建列名时,ForeignKey字段将“\u id”附加到字段名。因此,业务类中新的“state”字段将自动使用您之前定义的列“state_id”,除非您更改了Django的一些默认行为
有关这方面的更多信息:
不需要单独状态表的替代方案:
from django.contrib.localflavor.us.us_states import STATE_CHOICES
class Business(models.Models):
...
state = models.CharField(max_length=2, choices=STATE_CHOICES, null=True, blank=True)
...
2015年编辑(django 1.8)
您应该检查django官方的localflavor repo:
有些用于此特定用途
文档可用。哇,就是这样。谢谢下面关于使用提供的localflavor抽象的评论做得很好。当只需要一份简单的美国各州名单时,这一点尤其可取。但是,在我们的一个应用程序中,有些州还需要其他元数据,有些州完全从应用程序中删除(在这些州不可用)。在这种情况下,维护我们自己的状态数据表最有意义。它在一个名为django localflavor的应用程序(可通过pip获得)中单独管理。
from localflavor.us.models import USStateField
class Business(models.Models):
…
state = USStateField(null=True, blank=True)
…