주어진 날짜가 미래인지 확인하려면 관리자의 내 DateField에 추가 유효성 검사를 추가해야합니다. 나는 그런 일에 경험이 없으므로 여기에 내가 한 일이있다. 1) 나는 사용자 지정 양식 필드를 생성 및 검증을 추가했습니다 :기본 관리자 모델 양식 django를 재정의 할 수 없습니다
class PastDateField(forms.DateField):
def clean(self, value):
"""Validates if only date is in the past
"""
if not value:
raise forms.ValidationError('Plase enter the date')
if value > datetime.now():
raise forms.ValidationError('The date should be in the past, not in future')
return value
2) 다음에 내가 추가 한 사용자 정의 모델 형태 :
class CustomNewsItemAdminForm(forms.ModelForm):
title = forms.CharField(max_length=100)
body = forms.CharField(widget=forms.Textarea)
date = PastDateField()
region = forms.ModelChoiceField(Region.objects)
3) 그리고 여기에 내가 등록한 방법 관리자 :
class NewsItemAdmin(admin.ModelAdmin):
form = CustomNewsItemAdminForm
def queryset(self, request):
return NewsItem.objects.all()
admin.site.register(NewsItem, NewsItemAdmin)
이의 결과는 내 관리 양식 1) 나는 사용자 지정 관리 형태로 지정하지 않은 필드 2) JavaScr 결여를 표시한다는 것입니다 ipt calendar at datetime 필드
내가 뭔가 잘못하고있는 것이 꽤 분명하지만, 나는 멍청이로서 나의 필요와 관련된 예제를 찾지 못했습니다. 일을 망치지 않고 datetime 필드에 사용자 정의 유효성 검사를 추가하는 더 좋은 방법은 무엇입니까?
EDIT : 정답은 Brian Luft와 Daniel Roseman에게 감사드립니다. 여기에 같은 문제에 직면 사람이 포스트가 도움이 있도록하려면 결과 코드 : - 또는 관리자 중 여부 - ModelForm에 명시 적으로 필드를 선언, 첫째
class CustomNewsItemAdminForm(forms.ModelForm):
class Meta:
model = NewsItem
def clean_date(self):
"""Validates if only date is in the past
"""
date = self.cleaned_data["date"]
if date is None:
raise forms.ValidationError('Plase enter the date')
if date > datetime.now().date():
raise forms.ValidationError('The date should be in the past, not in future')
return self.cleaned_data["date"]
class NewsItemAdmin(admin.ModelAdmin):
form = CustomNewsItemAdminForm
def queryset(self, request):
return NewsItem.objects.all()
admin.site.register(NewsItem, NewsItemAdmin)
메타 모델 선언을 양식에 추가 했습니까 (일부만 남겨 뒀습니까?). 폼의 필드를 선언 할 필요는 없으며 대신 '필드'또는 '제외'옵션을 사용해야합니다. 마지막으로 date를 일반 DateField로 남겨두고 양식 자체에 clean_date 메소드를 제공 할 수 있습니다. http://docs.djangoproject.com/ko/1.1/ref/contrib/admin/#adding-custom-validation-to -the-admin http://docs.djangoproject.com/ko/1.1/topics/forms/modelforms/#overriding-modelform-clean-method 모델 정의에 붙여 넣을 수 있습니까? –