Meslektaşlarıma verilen dersleri kaydetmek için çok basit bir Django uygulamasına sahibim. Çok basittir, Django yöneticisinin kendisini kullanıyorum. İşte benim models.py geçerli:Django yöneticisinde özel doğrulama
kimsenin yönetici formlarda bitiş tarihinden sonra başlangıç tarihini girmemesini sağlamak için gereken#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()
, bu yüzden yönetici özel doğrulama için Django dokümanlar okuyun ve aşağıdaki uygulamaya benim admin.py: Ancak
#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)
, bu benim yönetici üzerinde hiçbir etkisi yoktur ve resimde görüldüğü gibi START_DATEEND_DATE sonradır dersleri kaydetmek mümkün duyuyorum:
yanlış yapıyorum ??
bu işe yaradı! .. ve neredeyse 2 saatlik bir düzeltme elde etmek için dokümanlar okumaya harcadım! .. Bir kez daha şüphe ettim ... doğrulama hatası sadece yeni bir giriş oluşturduğumda atıldı. Mevcut olanlar için orada kalmaya devam ettiler .. clean() yönteminin yalnızca bir model kaydedildiğinde çağrıldığını varsayalım. Sayfa her yüklendiğinde bunun çağrıldığından emin olabilir miyim? – Amistad
@Amistad "Temiz" yöntemi yalnızca form gönderildiğinde, "model kaydedildiğinde" değil çağrılır (modelinizin geçerliliğini arıyorsanız bunu yapınız: https://docs.djangoproject.com/en /1.7/ref/models/instances/#validating-objects) ... Model örneklerinizi "sayfa her yüklendiğinde" doğrulamayacak ancak niçin böyle bir "özellik" istiyorsunuz? –
hmm..bunu düşündüğümde, modelde yaptığım tüm değişiklikler sadece form aracılığıyla yönetici aracılığıyla gerçekleşir .. bir doğrulama kontrolü yeterli olmalıdır .. teşekkürler .. Teşekkürler .. – Amistad