Для случая 1, вы можете проверить, что легко в clean
методы модели:
from django.core.exceptions import ValidationError
class MyModel(models.Model):
...
def clean(self):
if self.call_me and not self.telephone.strip():
raise ValidationError('Telephone is required')
Для случая 2, М2М отношения не добавляют до после модель не сохраняется, поэтому использование clean
на вашей модели не будет работать в этом сценарии. Однако вы можете сделать это с помощью метода clean
любого ModelForm
, который вы используете для его редактирования, будь то в администраторе или в вашем собственном представлении.
Однако, имея category
как M2M, когда единственными возможными значениями являются «продажа» и «аренда», это плохой дизайн. Даже тогда «продажа» и «аренда» являются взаимоисключающими, поэтому M2M неуместно в любом случае (ваша модель не будет одновременно испытывать как «продажу», так и «ренту»).
В результате было бы лучше иметь category
CharField
с choices
, состоящий из «продажи» и «аренды». Если вы это сделаете, вы можете использовать метод вашей модели clean
так же, как и Case 1 для этого.
Похоже, что у вас плохо оформлены модели. Попробуйте нормализовать схему базы данных. – cha0site
Какая часть его кажется неправильной? – RS7