Проверка поля в Admin, когда поле зависит от других полей - PullRequest
0 голосов
/ 31 марта 2012

Как я могу применить проверку в администраторе к различным полям, когда они зависят друг от друга?

Например, скажем, у меня есть поле A (BooleanField) и поле B (CharField), что я хочу сделатьесли в поле «Администратор» выберите поле «A» (флажок) и ничего не вводите в поле «B», и если он попытается сохранить, то должно появиться сообщение об ошибке, похожее на обычный пробел = «False».Так как я могу сделать такой вид проверки в админ.

Например, вариант использования

У меня есть таблица, имеющая следующую структуру: -

INTERVIEW_TYPES = (

    ('default', 'None'),
    ('Paired Visit','Paired Visit'),
    ('Time Series', 'Time Series'),

),

класс Интервью (models.Model):

ic_number              = models.CharField(verbose_name ="Visit Configuration Number",max_length=20,unique=True,null =True,blank=True)
ic_description         = models.TextField(verbose_name ="Visit Configuration Description",null = True,blank=True)
title                  = models.CharField(verbose_name ="Visit Configuration Title",max_length=80,unique=True)
starting_section       = models.ForeignKey(Section)
interview_type         = models.CharField(verbose_name = "Mapped Visit",choices=CHOICES.INTERVIEW_TYPES, max_length=80, default="Time Series")
select_rating          = models.CharField(choices=CHOICES.QUESTION_RATING, max_length=80, default="Select Rating")
view_notes             = models.CharField(choices=CHOICES.VIEW_NOTES, max_length=80, default="Display Notes")
 revisit                = models.BooleanField(default=False)   

..... и так далее ......

class Meta:
    verbose_name = 'Visit Configuration'
    verbose_name_plural = 'Visit Configurations'
   # ordering = ('rpn_number',)

def __unicode__(self):
    return self.title

Свой admin.py

класс InterviewAdmin (admin.ModelAdmin):

list_display = ('id','title', 'starting_section','ic_number','show_prior_responses')
raw_id_fields = ('starting_section',)

admin.site.register (Interview, InterviewAdmin)

В админке, если я установил флажок, чтобы вернуться и вполе интервью_типа (в котором будет отображаться раскрывающийся список с вариантами выбора «Нет», «Парное посещение», «Временные ряды»), если пользователь выбрал значение «Нет» в этом раскрывающемся списке, а затем нажмите кнопку «Сохранить», это вызовет ошибку, похожую на обычный пробел.поле обязательно для заполнения "

Как я могу сделать такую ​​проверку, когда поля зависят друг от друга?

Пожалуйста, игнорируйте синтаксическую ошибку, любую.

Спасибо

1 Ответ

0 голосов
/ 31 марта 2012

Я запутался в response_change и переопределении чистого метода, наконец, это то, что я сделал

переопределить чистый метод, создав модельную форму в admin.py

класс InterviewAdminForm (forms.ModelForm):

class Meta:
    model = Interview

def clean(self, *args, **kwargs):
    cleaned_data = super(InterviewAdminForm, self).clean(*args, **kwargs)

    if self.cleaned_data['interview_type'] == "default" \
    and self.cleaned_data['Revisit'] == True:
        raise forms.ValidationError({'interview_type': ["error message",]})
    return cleaned_data

класс InterviewAdmin (admin.ModelAdmin):

# call the form for Validation
form = InterviewAdminForm
....and so on ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...