Фильтрация значения полей в модельной форме в django - PullRequest
0 голосов
/ 12 августа 2011

Я использую ModelForm в Django для создания моей формы в Django.Итак, у меня есть модель встречи, которая ссылается на модель местоположения.Поскольку я использую ModelForm, поле выбора для поля Location автоматически заполняется самим django.Я хочу контролировать тип местоположения, которое заполняется при создании формы с использованием ModelForm на основе таких атрибутов, как, скажем, status.

Я не хочу вручную переопределять само поле местоположения в ModelForm.Я хочу, чтобы элементы обрабатывались самим django.Я просто хочу подключить фильтр.Есть предложения?

1 Ответ

0 голосов
/ 12 августа 2011

Если ваш экземпляр существует, а не в встроенной форме, вы можете сделать следующее в форме модели:

def __init__(self,*args,**kwargs):
    super (AppointmentForm,self ).__init__(*args,**kwargs) # populates the post
    #filter appointments based on status
    if self.instance.pk:
        # the location filter below is a guess. i don't know your models.
        locations = Location.objects.filter(status_id=self.instance.status_id)
        self.fields['location'].queryset = locations

Другой подход заключается в использовании Callbacks, который становится сложнее ...

...