필터

2012-02-22 2 views
1

그래서 나는 다음과 같이 몇 장고 모델이 다른 필드에 값 필드의 선택을 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" 

그리고 나는 위해 appliction을위한 모델 양식을 가지고, 즉 그냥이있다 :

class ApplicationForm(ModelForm): 
    class Meta: 
    model = Application 
    exclude = ('hasBeenPlaced','user',) 

내 도시 모델에서 도시 개체 중 하나에서 사용자가 선택할 수 있도록 내 ApplicationForm에 선택 위젯을 추가하고 해당 선택에 따라 주변 지역을 필터링 할 수 있도록하고 싶습니다. 예를 들어, 내가 추가하려는이 추가 필드에서 '시카고'를 선택하면 시카고에 없었던 모든 이웃을 ApplicationForm에서 선택할 수있는 사용 가능한 이웃 목록에서 제거합니다. 이것이 장고와 가능한가? 그렇다면 그러한 작업을 어떻게 성취 할 수 있습니까?

답변

2

기술적으로 이것은 더 이상 Django의 영역에 없습니다. 페이지가 렌더링되면 Django가 완료됩니다. 이와 같은 것은 JavaScript와 특히 AJAX가 필요합니다. JSON에서 도시에 대한 이웃을 반환하는보기를 만든 다음 AJAX를 사용하여 도시 선택 상자의 onchange 이벤트가 발생할 때마다 해당 응답을 가져옵니다. JSON을 사용하여 neighboorhood 선택 상자에 대한 새 옵션을 만든 다음 이전 옵션을 해당 옵션으로 바꿉니다.

StackOverflow에는 모든 것을 구체적으로 수행하는 방법에 대한 수많은 질문이 있습니다.

+0

차가움. 어딘가에 javscript/AJAX를 사용할 필요가 있다고 생각했습니다. 장고가 이런 일을 돕기 위해 뭔가를 내장하고 있는지 알고 싶었습니다. –