fil*_*d13 4 python django validation
假设一个模型有两个 DateTimeFields:
class Tourney(models.Model):
registration_deadline = models.DateTimeField()
start_date = models.DateTimeField()
Run Code Online (Sandbox Code Playgroud)
当用户试图从Django管理内提交锦标赛,我怎么能测试registration_deadline是之前start_date保存到数据库之前,如果有错误,当然通知用户在线,就像Django的想,如果有任何其他验证错误?
基本上,我正在寻找自定义管理员验证。Django 文档的这一部分很接近,但似乎用于表单。如何在 Django 的管理员中执行“清理和验证相互依赖的字段”?即使只是指向文档中正确位置的指针也足够了。
编辑:我认为它与验证器有关,但它们似乎只能测试单个值,而不是同时测试两个值...
from django import forms
from django.contrib import admin
from .models import Tourney
class TourneyAdminForm(forms.ModelForm):
class Meta:
model = Tourney
fields = '__all__'
def clean(self):
if self.cleaned_data['registration_deadline'] > self.cleaned_data['start_date']:
raise forms.ValidationError('Registration deadline must be before the start date')
return self.cleaned_data
class TourneyAdmin(admin.ModelAdmin):
form = TourneyAdminForm
admin.site.register(Tourney, TourneyAdmin)
Run Code Online (Sandbox Code Playgroud)