Я делаю приложение для загрузки изображений. Мне нужна проверка одного из двух полей. По файлу или по URL. Я написал такой код, но метод view не вызывает clean_image в forms.py. Спасибо за помощь (извините за мой плохой английский)
forms.py
class UploadForm(forms.ModelForm):
image = forms.ImageField(required=False)
url = forms.CharField(max_length=64, required=False)
class Meta:
model = Image
fields = (
'image',
'url'
)
def clean_image(self):
image = self.cleaned_data.get('image')
url = self.cleaned_data.get('url')
if (image != None and url != '') or (image == None and url == ''):
raise forms.ValidationError('Fill one field')
def save(self):
self.clean_image()
new_image = Image.objects.create(
image=self.cleaned_data.get('image'),
url=self.cleaned_data.get('url')
)
return new_image
views.py
def upload(request):
if request.method == 'POST':
upload_form = UploadForm(request.POST, request.FILES)
if upload_form.is_valid():
upload_form.save()
return redirect('/')
else:
upload_form = UploadForm()
context = {
'form': upload_form,
}
return render(request, 'upload_page.html', context)