@jorge
В Django валидация формы на основе модели осуществляется с использованием ModelForm
.
- Создайте класс для формы, наследующийся от forms.ModelForm. В качестве атрибута meta укажите модель, на основе которой будет создана форма.
1
2
3
4
5
6
7
|
from django import forms
from .models import MyModel
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = '__all__'
|
- Используйте эту форму в вашем представлении для обработки запросов:
1
2
3
4
5
6
7
8
9
10
11
12
|
from django.shortcuts import render
from .forms import MyModelForm
def my_view(request):
if request.method == 'POST':
form = MyModelForm(request.POST)
if form.is_valid():
# Обработка валидной формы
form.save()
else:
form = MyModelForm()
return render(request, 'my_template.html', {'form': form})
|
- В вашем шаблоне my_template.html вы можете использовать форму для отображения и ввода данных в поля модели:
1
2
3
4
5
|
{% csrf_token %}
{{ form.as_p }}
Отправить
|
- Валидация полей модели будет осуществлена автоматически. Если все поля валидны, вы можете сохранить данные, вызвав метод form.save(). Если хотите выполнить дополнительные действия после сохранения формы, вы можете переопределить метод form.save() в MyModelForm.
1
2
3
4
5
6
7
8
9
10
11
|
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = '__all__'
def save(self, commit=True):
instance = super().save(commit=False)
# Выполните дополнительные действия с instance
if commit:
instance.save()
return instance
|
Таким образом, вы можете использовать ModelForm
для создания формы на основе модели и автоматической валидации полей при вводе данных.