Можно ли сгруппировать поля модели в Django? - PullRequest
0 голосов
/ 08 июня 2011

Работает над приложением Calendar и хочет, чтобы в каждом экземпляре модели Event было заполнено одно из полей {allday | start, end}.То есть либо введено поле на весь день, либо поля начало + конец, но не оба.

Как мне смоделировать это и правильно ли оно работать в приложении администратора?Я бы хотел, чтобы одна из групп была обязательной.

1 Ответ

3 голосов
/ 08 июня 2011

Создайте модель со всеми 3 полями и переопределите метод очистки (который вызывается при проверке модели), чтобы проверить ваши условия:

def clean(self):
    if not self.allday: # allday not present
        if not self.start or not self.end: # start and/or end not present
            raise ValidationError('error message...')
    else:
        if self.start or self.end:     # allday present but also start and/or end
            raise ValidationError('error message...')

Дополнительная информация о clean: Модель.чистый ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...