gpt4 book ai didi

python - clean_data 在 django 1.8.6 中不起作用

转载 作者:行者123 更新时间:2023-12-01 04:20:31 38 4
gpt4 key购买 nike

我正在编写 django 教程,并尝试使用 clean_data 属性验证表单。

forms.py 文件的代码是

 from django import forms
from .models import SignUp

class SignUpForm(forms.ModelForm):

class Meta:
model = SignUp
fields = ['email']

def clean_email(self):
email = self.cleaned_data.get('email')
if not '.edu' in email:
raise forms.ValidationError('Please use a valid academic email address')
print(email)
return email

models.py 文件包含以下代码

from django.db import models

# Create your models here.
class SignUp(models.Model):
email = models.EmailField()
full_name = models.CharField(max_length=255)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)

def __str__(self):
return self.email

并且 admin.py 有以下代码行

from django.contrib import admin
from .models import SignUp
from .forms import SignUpForm

class SignUpAdmin(admin.ModelAdmin):
list_display = ['full_name', 'email', 'timestamp', 'updated']
class Meta:
form = SignUpForm

admin.site.register(SignUp, SignUpAdmin)

我遇到的问题是,无法获取电子邮件字段,也无法处理电子邮件字段,事实上,cleaned_data 不包含数据,print(email) 未在控制台中打印电子邮件。我无法验证 .edu 电子邮件地址

我使用的是python3和django1.8.6

最佳答案

您错误地定义了管理类,因此它没有使用您的自定义表单。您不在 modeladmin 中使用 class Meta;您只需直接定义类属性即可。

class SignUpAdmin(admin.ModelAdmin):
list_display = ['full_name', 'email', 'timestamp', 'updated']
form = SignUpForm

关于python - clean_data 在 django 1.8.6 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33775692/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com