2012-02-22 44 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