我是Python和django的新手,并且无法实现模型表单验证。通过相关字段验证Django表格
我有一个表单,用户可以注册多个研讨会。我想验证表格,以便用户无法注册具有重叠时间段的研讨会。
我很难搞清楚如何访问我需要进行比较的时间数据。
问题:
- 我怎样才能从车间模型访问相关实时数据并将其过滤通过表单输入?
- 如何才能比较此数据将返回的多个项目?
当我运行下面的代码,我得到“太多的值解压缩”的错误。我明白为什么会发生这种情况,但不知道如何访问阵列中的信息来进行比较。
models.py
from django.db import models
from django.contrib.auth.models import User
class Workshop(models.Model):
title = models.CharField(max_length=100)
tuition = models.PositiveIntegerField()
start_time = models.DateTimeField()
end_time = models.DateTimeField(
class Registration(models.Model):
user = models.ForeignKey(User)
workshop = models.ManyToManyField(Workshop)
forms.py
from django.db import models
from django.forms import ModelForm
from .models import Registration, Workshop
from django.core.exceptions import ValidationError
class RegistrationForm(ModelForm):
class Meta:
model = Registration
exclude = ['user']
def clean(self):
workshop = self.cleaned_data.get('workshop')
startTime = Workshop.objects.get('workshop__start_time')
endTime = Workshop.objects.get('workshop__end_time')
if (startTime > endTime) or (startTime == startTime):
raise ValidationError("Workshop times overlap.")
return self.cleaned_data