所以我有一些看起来像这样的Django模型:
class City(models.Model):
name = models.CharField("City", max_length=200)
def __unicode__(self):
return self.name
class Meta:
verbose_name_plural="Cities"
class Neighborhood(models.Model):
name = models.CharField("Neighborhood", max_length=200)
city = models.ForeignKey(City, verbose_name='City')
def __unicode__(self):
return self.name + " in " + str(self.city)
class Application(models.Model):
NUM_BED_CHOICES = ((1, u'Rollin Solo'), (2, u'2 Bedrooms'), (3, u'3 Bedrooms'), (4, u'4 Bedrooms'),)
LEASE_LENGTH_CHOICES = ((u'SUM', u'Summer'), (u'1YR', u'One Year'), (u'2YR', u'Two Years'), (u'2Y+', u'Two Years+'),)
user = models.ForeignKey(User)
neighborhood = models.ForeignKey(Neighborhood, verbose_name="Neighborhood")
moveinDate = models.DateField("Move-in Date")
numberOfBedrooms = models.SmallIntegerField("Number of Bedrooms", choices=NUM_BED_CHOICES)
leaseLength = models.CharField("Lease Length", max_length=3, choices=LEASE_LENGTH_CHOICES)
bedroomBudget = models.DecimalField("Budget Per-Bedroom", max_digits=10, decimal_places=2)
hasPet = models.BooleanField("Has Pet")
hasBeenPlaced = models.BooleanField("Has Been Placed", default=False)
class Meta:
verbose_name = "Application"
我有一个适用的模型表格,就是这样:
class ApplicationForm(ModelForm):
class Meta:
model = Application
exclude = ('hasBeenPlaced','user',)
我希望能够向我的ApplicationForm
添加一个选择窗口小部件,允许用户从我的城市模型中的某个城市对象中进行选择,然后基于此过滤他们对社区的选择那个选择。例如:如果他们选择芝加哥'在我要添加的这个额外字段中,所有在芝加哥没有的社区都将从可用社区列表中删除,以便在ApplicationForm
中进行选择。 Django有可能吗?如果是这样,那么如何完成这项任务?
答案 0 :(得分:2)
从技术上讲,这已不再是Django的范畴了。呈现页面后,Django就完成了。这样的事情需要JavaScript,特别是AJAX。您只需创建一个视图,以便在JSON中返回城市的邻域,然后在城市选择框的onchange事件被触发时使用AJAX获取该响应。使用JSON为neighboorhood选择框构建新选项,然后用它替换旧选项。
StackOverflow上有关于如何具体完成所有这些的一百万个问题 - 很多是我自己编写的。