2012-02-22 84 views
1

所以我有一个看起来像这几个Django模型:过滤器在其他领域ForeignKeyFeild在现场选择的值

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',) 

我希望能够选择小工具添加到我的​​,允许用户从在我的城市模型中的城市的一个对象选择,然后过滤他们的选择,基于该选择的街区。例如:如果他们在这个领域外我想补充选择“芝加哥”,所有不在芝加哥街区将被从现有社区的列表中删除,以从​​选择。这可能与Django?如果是这样,那么如何完成这样的任务呢?

回答

2

从技术上来说,这不再是在Django的境界。一旦页面被渲染,Django就完成了。像这样的任何东西都需要JavaScript,特别是AJAX。您只需创建一个视图以JSON形式返回城市的邻域,然后在城市选择框的onchange事件触发时使用AJAX获取该响应。使用JSON为neighboorhood选择框构建新的选项,然后用它替换旧的选项。

有StackOverflow上百万的问题关于如何具体做的一切 - 许多我自己写的。

+0

酷。我想我需要在那里使用一些javscript/AJAX。只是想看看Django是否可能有内置的东西来帮助促成这样的事情。 – 2012-02-22 21:23:06