2015-11-25 5 views
0

Im в настоящее время разрабатывает систему веб-приложения с помощью Python Django, и использовать Django Smart_Select для моего профиля редактирования страницы в профиле Редактировать страницу, есть страны, государство и парламент для каждого профиля пользователяДжанго Смарт Выбор данных проверки

Некоторых (например,) , поэтому при регистрации нового пользователя я бы проверил, если пользователь выбрал государство, в котором есть парламент, тогда требуется поле парламента, иначе поле может быть пустым.

в forms.py моей ModelForm состояния использует ModelChoiceField

Я прилипаемость на это в течение нескольких часов, пожалуйста, помогите ... Спасибо большое, ваше сотрудничество будет высоко оценен.

ответ

0

От documentation:

class ExampleForm(forms.Form): 

parliament = … 
state = ModelChoiceField(…) 

def clean_parliament(self): 
    if self.cleaned_data[“state”].has_parliament() and not self.cleaned_data[“parliament”]: 
     raise forms.ValidationError(“parliament is required for this state!”) 

    return self.cleaned_data[“parliament”] 

Это предполагает, что ваша State модель имеет has_parliament метод, который возвращает истину или ложь на основе Wether или не государство имеет парламент. Вы можете адаптировать приведенный выше код для проверки любых других типов ошибок.

+0

Благодарим вас за ответ, не могли бы вы указать пример метода «has_parliament»? – user3576761

+1

Все зависит от того, как реализована ваша модель государства и парламента. Я просто привел пример хорошей практики использования кода (используя модельные методы, чтобы упростить просмотр/формы), но как вы проверяете, не имеет ли государство, что парламент зависит от вас и выходит за рамки вашего вопроса. Простое использование связанных менеджеров моделей должно быть достаточным ('return self.parliaments_set.all(). Count()! = 0'). Это, конечно, предполагает, что у парламента есть «model.ForeignKey (State)». – Saturnix

+1

Большое спасибо! оценил! – user3576761

Смежные вопросы