我正在寻找一种检查从表单提交的数据是否符合特定条件的方法-不是数据是否有效,而是例如对某个问题的回答是“是”还是“否”,并且仅如果响应为“是”,则应将数据保存到数据库中。如果提交的数据不符合标准,则不应将其保存到数据库中,并应显示一条消息通知用户。
我有一个存储参与者信息的模型:
class Participant(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
date_of_birth = models.DateField()
has_health_cover = models.CharField(
choices=(
('0','No'),
('1','Yes)
),
default='0',
max_length=1
)
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.PROTECT
)
date_registered = models.DateTimeField(default=timezone.now)
使用Modelform创建模型:
class ParticipantRegisterForm(forms.ModelForm):
class Meta:
model = Participant
fields = [
'first_name',
'last_name',
'date_of_birth',
'has_health_cover',
]
使用通用的CreateView对象呈现:
class ParticipantRegisterView(LoginRequiredMixin, CreateView):
model = Participant
form_class = ParticipantRegisterForm
template_name = 'participants/register.html'
def form_valid(self, form):
form.instance.provider = self.request.user
return super().form_valid(form)
我不确定如何获取POST请求数据,确定变量has_health_cover
是0(否)还是1(是),以及仅将数据保存到{{1 }}数据库应为Participant
。
如果has_private_health == 0
,则不应保存数据,并且应显示一条简短的消息,并提示用户“参与者不符合资格”。我已经在基本.html模板中设置了Flash消息。
答案 0 :(得分:0)
您可以在表单中添加自定义clean_<field>
方法以检查值并在值无效时引发错误:
function getPublicKey(keyPair: java.security.KeyPair): string {
const kf = java.security.KeyFactory.getInstance("RSA");
let pubKeySpec = kf.getKeySpec(keyPair.getPublic(), java.security.spec.X509EncodedKeySpec);
return pubKeySpec.getEncoded();
}