Tôi có một ứng dụng Django rất đơn giản để ghi lại các bài giảng cho các đồng nghiệp của tôi. Vì nó là khá tiểu học, tôi đang sử dụng chính quyền quản trị Django. Dưới đây là models.py tôi:Xác nhận tùy chỉnh trong quản trị Django
#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()
tôi cần phải đảm bảo rằng không ai đi vào ngày bắt đầu kể từ ngày kết thúc trong các hình thức quản trị, vì vậy tôi đọc các tài liệu django để xác nhận tùy chỉnh trong quản trị và thực hiện những điều sau đây admin.py tôi:
#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)
Tuy nhiên, điều này không có tác dụng gì trên quản trị của tôi và tôi có thể tiết kiệm được các bài giảng mà start_date là sau end_date như thể hiện trong hình ảnh:
tôi đang làm gì sai ??
đã hoạt động !! .. và tôi gần như đã dành 2 giờ đọc lại tài liệu để sửa lỗi cho nó !! .. Tôi đã có thêm một nghi ngờ nữa .. lỗi xác thực bị ném lên chỉ khi tôi tạo một mục nhập mới. Đối với những cái hiện có, chúng tiếp tục ở đó .. Tôi giả sử rằng phương thức clean() chỉ được gọi khi một mô hình được lưu. Làm cách nào để đảm bảo rằng nó được gọi mỗi lần tải trang? – Amistad
@Amistad Phương thức 'clean' chỉ được gọi khi biểu mẫu được gửi chứ không phải" khi mô hình được lưu "(nếu đó là những gì bạn muốn bạn đang tìm kiếm xác thực của mô hình: https://docs.djangoproject.com/vi /1.7/ref/models/instances/#validating-objects) ... Điều gì sẽ vẫn không xác thực các phiên bản mô hình của bạn "mỗi lần tải trang", nhưng tại sao bạn lại muốn một "tính năng" như vậy? –
hmm..để tôi nghĩ về điều đó, tất cả những thay đổi của tôi đối với mô hình chỉ xảy ra thông qua quản trị viên thông qua biểu mẫu..để kiểm tra xác thực, có đủ .. .. – Amistad