очистить данные формы только при создании модели, а не при обновлении - PullRequest
0 голосов
/ 18 апреля 2020

Я новичок в Django, так что это очень запутанно. У меня есть этот чистый метод, чтобы вызвать ошибку, когда входные данные имеют тот же год с существующими данными:

class FormSetting(forms.ModelForm):
    class Meta:    
        model = model
        fields = '__all__'

    def clean_date_year(self):
            clean_year = self.cleaned_data.get('effective_date')
            year = clean_year.strftime("%Y")
            check = model.objects.filter(effective_date__year=year).exists()
            if check:
                raise forms.ValidationError("The Year Input already here")
            return clean_year

Но я также использую ту же страницу и ту же форму, чтобы сделать обновление, как я не могу очистить его при обновлении?

Я использую поле даты, чтобы оно использовалось для выбора даты

            <fieldset>
                        <div class="row">
                            <div class="col-lg-3">
                                <label >Effective Date</label>
                            </div>
                            <div class="col-lg-9">
                                {{ form.effective_date.errors}}
                                {{ form.effective_date }}
                            </div>
                        </div>
                    </fieldset>

1 Ответ

0 голосов
/ 18 апреля 2020

Вы должны исключить текущий экземпляр из вашего набора запросов.

Попробуйте это:

class FormSetting(forms.ModelForm):
    class Meta:    
        model = model
        fields = '__all__'

    def clean_date_year(self):
            clean_year = self.cleaned_data.get('effective_date')
            year = clean_year.strftime("%Y")
            check = model.objects.filter(effective_date__year=year)
            if self.instance:
                check = check.exclude(id=self.instance.id)
            if check.exists():
                raise forms.ValidationError("The Year Input already here")
            return clean_year
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...