下拉列表在html中正确显示,但是我不明白为什么在尝试提交/时一次又一次地遇到相同的错误。你知道吗
“请选择一个有效的选项。这个选择不是可用的选择之一。”
问题背景
我在Django定义了两个模型。一个CourseModel数据库保存所有提供的课程,一个注册数据库将课程链接到用户。你知道吗
你知道吗型号.py你知道吗
from django.db import models
# Create your models here.
class CourseModel(models.Model):
course = models.CharField(max_length=100)
date = models.DateField(max_length=100)
time = models.TimeField()
location = models.CharField(max_length=100)
datetime = models.DateTimeField()
class RegistrationModel(models.Model):
name = models.CharField(max_length=100)
adress = models.CharField(max_length=100)
city = models.CharField(max_length=100)
email = models.EmailField(max_length=100)
course = models.ForeignKey('self', on_delete=models.CASCADE)
def __str__(self):
return self.name
我使用modelForm创建一个注册表单,用户可以从下拉列表中订阅课程。你知道吗
你知道吗表单.py你知道吗
from django.forms import ModelForm, RegexField
from home.models import RegistrationModel, CourseModel
from django import forms
import datetime
class RegistrationForm(ModelForm):
def __init__(self, *args, **kwargs):
super(RegistrationForm, self).__init__(*args, **kwargs)
self.fields['course'].queryset = CourseModel.objects.exclude(date__lt=datetime.datetime.today()).values_list('datetime', flat=True)
self.fields['course'].empty_label = None
class Meta:
model = RegistrationModel
fields = '__all__'
你知道吗视图.py你知道吗
from django.shortcuts import render, redirect
from home.forms import RegistrationForm
from .models import CourseModel
import datetime
def home(request):
return render(request, 'home/home.html')
def registration(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
crs = request.POST.get('course')
print(crs)
if form.is_valid():
cleanform = form.save(commit=False)
cleanform.course = crs
cleanform.save()
return redirect('home')
else:
form = RegistrationForm()
return render(request, 'home/registration.html', {'form': form})
在} docs 。你知道吗
RegistrationForm
的__init__()
方法中,self.fields['course'].queryset = ...values_list('datetime', flat=True)
返回datetime
实例。见^{我相信这可能会引起问题。我猜
queryset
应该返回CourseModel
实例,基于Django docs:另外,您的
RegistrationModel.course
字段有一个指向'self'
的外键,而不是CourseModel
。不确定这是否是你想要的。你知道吗设置字段queryset的其他示例可以在here中找到。你知道吗
相关问题 更多 >
编程相关推荐