2016-02-26 3 views
0

У меня есть два поля в одной модели, я хочу только одно допустимое поле в форме администратора. Если одно поле является допустимым, другое невозможно вставить данные или наоборот. Но необходимо поместить данные в одно из двух полей для сохранения.Django: Два поля, один действительный

это возможно?

Спасибо!

ответ

4

Если вы хотите, чтобы это подтверждение происходило на бэкэнд, вы должны подтвердить его в форме clean. что-то вроде этого:

class MyAdminForm(forms.ModelForm): 
    def clean(self): 
     cd = self.cleaned_data 
     fields = [cd['field1'], cd['field2']] 
     if all(fields): 
      raise ValidationError('Please enter one or the other, not both') 
     if not any(fields): #Means both are left empty 
      raise ValidationError('Please enter either field1 or field2, but not both') 

    return cd 

Here is the documentation on using forms with django admin

Если вы хотите, чтобы проверка произойдут на внешнем интерфейсе, а не на форме представить, вы можете рассмотреть возможность использования яваскрипта решения для этого. Ответ на вопрос: javascript solution

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