Django在管理中对照另一个模型字段验证一个模型字段

2024-05-20 00:54:35 发布

您现在位置:Python中文网/ 问答频道 /正文

假设一个模型有两个datetime字段:

class Tourney(models.Model):
    registration_deadline = models.DateTimeField()
    start_date = models.DateTimeField()

当用户试图从Django管理员中提交锦标赛时,我如何在保存到数据库之前测试registration_deadlinestart_date之前,如果有错误,当然要通知用户内联,就像Django在其他验证错误时一样?在

基本上,我在寻找自定义管理验证。ThisDjango文档的一部分很接近,但似乎是针对表单的。如何从Django的管理中执行“清理和验证相互依赖的字段”?即使只是一个指向文档中正确位置的指针也足够了。在

编辑:我想这和validators有关,但是他们似乎只能测试一个值,而不能同时测试两个值。。。在


Tags: django用户文档模型datetimedatemodelmodels
1条回答
网友
1楼 · 发布于 2024-05-20 00:54:35
from django import forms
from django.contrib import admin

from .models import Tourney


class TourneyAdminForm(forms.ModelForm):
    class Meta:
        model = Tourney

    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)

相关问题 更多 >