Валидация ограничений недействительность django
Я пытаюсь проверить форму, но она идет в базу данных и возвращает ошибку проверки ограничений.
form.py
from django import forms
from . models import Semana
class FormularioSemana(forms.ModelForm):
class Meta:
model = Semana
exclude = ['username']
#fields = '__all__'
widgets = {'lunes_inicio': forms.TimeInput(attrs={'type': 'time'}),
'lunes_fin': forms.TimeInput(attrs={'type': 'time'}),
'martes_inicio': forms.TimeInput(attrs={'type': 'time'}),
'martes_fin': forms.TimeInput(attrs={'type': 'time'}),
'miercoles_inicio': forms.TimeInput(attrs={'type': 'time'}),
'miercoles_fin': forms.TimeInput(attrs={'type': 'time'}),
'jueves_inicio': forms.TimeInput(attrs={'type': 'time'}),
'jueves_fin': forms.TimeInput(attrs={'type': 'time'}),
'viernes_inicio': forms.TimeInput(attrs={'type': 'time'}),
'viernes_fin': forms.TimeInput(attrs={'type': 'time'}),
'sabado_inicio': forms.TimeInput(attrs={'type': 'time'}),
'sabado_fin': forms.TimeInput(attrs={'type': 'time'}),
'domingo_inicio': forms.TimeInput(attrs={'type': 'time'}),
'domingo_fin': forms.TimeInput(attrs={'type': 'time'}),
}
def __init__(self, username, *args, **kwargs):
super(FormularioSemana, self).__init__(*args, **kwargs)
# Set the instance's solicitante to the passed user. With this, you no longer have to do it in your views.py as well
self.instance.username = username
if not username.is_staff: # note that I moved the queryset filtering inside the if statement to avoid logical errors when user.is_staff is True
self.fields['nombre'].queryset = nombre.stem.filter(username = request.user)
def clean(self, *args, **kwargs):
super().clean(*args, **kwargs)
# Get the values
nombre = self.cleaned_data['nombre']
username = self.instance.username
# Find the duplicates
duplicates = Semana.stem.filter(
nombre=nombre,
username=username
)
if self.instance.pk:
duplicates = duplicates.exclude(pk=self.instance.pk)
if duplicates.exists():
raise forms.ValidationError('El nombre de la semana existe!')
Я думаю, что проблема здесь, но я не вижу их
views.py
def index(request):
if request.method == 'POST':
form = FormularioSemana(request.POST)
if form.is_valid():
add_usuario = form.save(commit=False)
add_usuario.username = request.user
add_usuario.save()
all_items = semanaDb.stem.filter(username = request.user)
semana = FormularioSemana()
messages.success(request, ('New item added...'))
#item = semanaDb.objects.filter(id=id)
#item.delete()
return render (request, 'semana.html', {'form':semana, 'all_items':all_items})
else:
semana = FormularioSemana()
all_items = semanaDb.stem.filter(username = request.user)
#item = semanaDb.objects.filter(id=id)
#item.delete()
return render(request, 'semana.html', {'form':semana, 'all_items':all_items})
models contraint --->
class Meta:
constraints = [
models.UniqueConstraint(fields=['username', 'nombre'], name='nombre unico')
]
Запускается, но формы не подтверждают ограничение.