Django - разрешить заполнять форму только одному поданному - PullRequest
0 голосов
/ 01 декабря 2019

Я использую модель django ниже для форм

class Post(models.Model):
    author = models.ForeignKey(CustomUser,on_delete=models.CASCADE,)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    post_url = models.URLField(max_length = 200, blank = True)
    picture = models.ImageField(upload_to='Image_folder', height_field=None, width_field=None, max_length=100, blank = True)
    slug = models.SlugField(unique=True, blank=True)

Я хочу разрешить пользователю вводить только одно поле - post_url или picture, но не оба. Кто-нибудь может дать представление о том, как это реализовать?

1 Ответ

1 голос
/ 01 декабря 2019
# you can use clean or clean_yourfieldname function in your forms.py class

For Example

def clean(self):
    cleaned_data = super().clean()
    post_url = cleaned_data.get("post_url")
    picture = cleaned_data.get("picture")

    if post_url and picture:
        raise forms.ValidationError(
            "Please fill either post_url or picture field, but not both"
        )

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