/ / Персонализирана проверка в Django admin - python, django, django-forms, django-admin, django-validation

Потребителска проверка в Django admin - python, django, django-forms, django-admin, django-validation

Имам много просто приложение за Django, за да запиша лекциите, дадени от моите колеги. Ето моите models.py:

#models.py
from django.db import models

class Lecture(models.Model):
topic = models.CharField(max_length=100)
speaker = models.CharField(max_length=100)
start_date = models.DateField()
end_date = models.DateField()

Трябва да се уверя, че никой не въвежда началната дата след крайната дата в административните формуляри, затова прочетох django документите за персонализирано потвърждение в администратора и приложих следното в admin.py

#admin.py
from models import Lecture
from django.contrib import admin
from django import forms


class LectureForm(forms.ModelForm):
class Meta:
model = Lecture

def clean(self):
start_date = self.cleaned_data.get("start_date")
end_date = self.cleaned_data.get("end_date")
if start_date > end_date:
raise forms.ValidationError("Dates are incorrect")
return self.cleaned_data


class LectureAdmin(admin.ModelAdmin):
form = LectureForm
list_display = ("topic", "speaker", "start_date", "end_date")

admin.site.register(Lecture, LectureAdmin)

Това обаче няма никакъв ефект върху моя администратор и мога да запазя лекции, където start_date е след end_date, както се вижда на изображението:въведете описанието на изображението тук

Какво правя погрешно?

Отговори:

16 за отговор № 1

Имате проблем с отстъп. Вашият clean Методът е вмъкнат във формата "Meta class. Преместете го назад едно ниво return операторът е отстъпен в метода.