Как я могу установить 'or' в двух полях модели django
Предположим, у меня есть django-модель изображения:
from django.db import models
class Image(models.Model):
...
image = models.ImageField(upload_to='some_place')
image_url = models.URLField()
...
и я хочу, чтобы пользователь мог загрузить либо image
, либо url
, поэтому я не могу установить оба поля.
null=True
, потому что я хочу, чтобы хотя бы одно из них отображалось в шаблоне. Как я могу это сделать?
Вы можете поставить null=True
к обоим, а затем проверить, что хотя бы одно из двух полей вашей формы было заполнено, используя ее метод clean
.
class ImageForm(forms.ModelForm):
def clean(self):
if not (self.cleaned_data.get('image') or self.cleaned_data.get('image_url')):
raise forms.ValidationError("You must fill at least one of both fields")
Если оба поля пусты, то будет выдана ошибка валидации, говорящая о том, что хотя бы одно из них должно быть заполнено.