Я хочу присвоить значение NullBooleanField
, чтобы всегда противопоставлять другое значение поля в той же модели, за исключением None
. Из моделей ниже я хочу убедиться, что значение scam
равно True
, значение whitelist
также не может быть True
. Но если scam
- None
, whitelist
разрешено также установить на None
. Ожидаемые критерии является одним из следующих параметров:Как установить значение поля модели модели django на основе другого поля в той же модели
- Если
scam
являетсяTrue
, допустимое значениеwhitelist
являетсяFalse
илиNone
- Если
scam
являетсяFalse
, допустимое значениеwhitelist
являетсяTrue
илиNone
- Если
scam
:None
, допустимое значениеwhitelist
:True
илиFalse
илиNone
Итак, как убедиться, что scam
всегда противоположно whitelist
?
Это мой класс модели:
class ExtendHomepage(models.Model):
"extending homepage model to add more field"
homepage = models.OneToOneField(Homepage)
# True if the website is a scam, False if not, None if not sure
scam = models.NullBooleanField(blank=True, null=True)
# True if the webpage is already inspected, False if not
inspected = models.BooleanField(default=False)
# True if the website is already reported, False if not yet
reported = models.NullBooleanField(blank=True, null=True)
# True if the website response is 200, else it is False
access = models.BooleanField(default=True)
# True if the web should be whitelist, False if should not, None pending
whitelist = models.NullBooleanField(blank=True, null=True)
Я решил использовать чистый() & и перезаписать сохранить(). clean() для проверки ввода формы при редактировании существующих данных и пользовательского сохранения() для автоматического присвоения значения при вставке нового известного веб-сайта мошенничества. Спасибо за идею. – pupil