Django 将来自外部模型的条目设置为可选
我有以下型号。py:Django 将来自外部模型的条目设置为可选,django,django-models,django-views,Django,Django Models,Django Views,我有以下型号。py: class trainee(models.Model): username = models.TextField(verbose_name = 'username') class learningObjective(models.Model): trainee = models.ForeignKey(trainee, verbose_name = "Azubi") learningObjectives = models.Te
class trainee(models.Model):
username = models.TextField(verbose_name = 'username')
class learningObjective(models.Model):
trainee = models.ForeignKey(trainee, verbose_name = "Azubi")
learningObjectives = models.TextField(verbose_name = 'Lernziel')
class completedTask(models.Model):
trainee = models.ForeignKey(trainee, verbose_name = "Azubi")
learningObjectivecompletedTask = models.ManyToManyField(learningObjective, verbose_name = "Lernziel")
date = models.DateField(verbose_name = 'Datum')
duration = models.IntegerField(verbose_name = 'Dauer')
documentationReference = models.TextField(verbose_name = 'Dokumentationsverweis', blank = True)
educationDepartment = models.TextField(verbose_name = 'Ausbildungsabteilung')
completedtasks = models.TextField(verbose_name = 'Ausgefuehrte Taetigkeiten')
@login_required(login_url='login')
def create_at(request):
trainee_objects = trainee.objects.all()
usernameID = 1
for traineeUser in trainee_objects:
if traineeUser.username == request.user.username:
usernameID = traineeUser.id
if request.method == 'POST':
form = completedTaskForm(request.POST)
if form.is_valid():
neueAT=completedTask(date=request.POST['Datum'], duration=request.POST['Dauer'], educationDepartment=request.POST['Abteilung'], completedtasks=request.POST['AT'], trainee_id=usernameID)
neueAT.save()
for ct in learningObjective.objects.filter(learningObjectives=request.POST.get['Lernziel']):
neueAT.learningObjectivecompletedTask.add(ct)
else:
form = completedTask()
return render(request, 'at.html', {'at': completedTask.objects.all(), 'Lernziel': learningObjective.objects.all()})
trainee_objects = trainee.objects.all()
usernameID = 1
for traineeUser in trainee_objects:
if traineeUser.username == request.user.username:
usernameID = traineeUser.id
if request.method == 'POST':
forms = completedTaskForm(request.POST)
if forms.is_valid():
formlearningObjectives = forms.cleaned_data['formlearningObjectives']
formdate = forms.cleaned_data['formdate']
formduration = forms.cleaned_data['formduration']
formeducationDepartment = forms.cleaned_data['formeducationDepartment']
formcompletedtasks = forms.cleaned_data['formcompletedtasks']
neueAT=completedTask(date=formdate, duration=formduration, educationDepartment=formeducationDepartment, completedtasks=formcompletedtasks, trainee_id=usernameID)
neueAT.save()
for ct in learningObjective.objects.filter(learningObjectives=formlearningObjectives):
neueAT.learningObjectivecompletedTask.add(ct)
else:
form = completedTask()
print("Es hat fehlgeschlagen!" + formset.errors)
return render(request, 'at.html', {'at': completedTask.objects.all(), 'Lernziel': learningObjective.objects.all()})
这是我的视图的一部分。py:
class trainee(models.Model):
username = models.TextField(verbose_name = 'username')
class learningObjective(models.Model):
trainee = models.ForeignKey(trainee, verbose_name = "Azubi")
learningObjectives = models.TextField(verbose_name = 'Lernziel')
class completedTask(models.Model):
trainee = models.ForeignKey(trainee, verbose_name = "Azubi")
learningObjectivecompletedTask = models.ManyToManyField(learningObjective, verbose_name = "Lernziel")
date = models.DateField(verbose_name = 'Datum')
duration = models.IntegerField(verbose_name = 'Dauer')
documentationReference = models.TextField(verbose_name = 'Dokumentationsverweis', blank = True)
educationDepartment = models.TextField(verbose_name = 'Ausbildungsabteilung')
completedtasks = models.TextField(verbose_name = 'Ausgefuehrte Taetigkeiten')
@login_required(login_url='login')
def create_at(request):
trainee_objects = trainee.objects.all()
usernameID = 1
for traineeUser in trainee_objects:
if traineeUser.username == request.user.username:
usernameID = traineeUser.id
if request.method == 'POST':
form = completedTaskForm(request.POST)
if form.is_valid():
neueAT=completedTask(date=request.POST['Datum'], duration=request.POST['Dauer'], educationDepartment=request.POST['Abteilung'], completedtasks=request.POST['AT'], trainee_id=usernameID)
neueAT.save()
for ct in learningObjective.objects.filter(learningObjectives=request.POST.get['Lernziel']):
neueAT.learningObjectivecompletedTask.add(ct)
else:
form = completedTask()
return render(request, 'at.html', {'at': completedTask.objects.all(), 'Lernziel': learningObjective.objects.all()})
trainee_objects = trainee.objects.all()
usernameID = 1
for traineeUser in trainee_objects:
if traineeUser.username == request.user.username:
usernameID = traineeUser.id
if request.method == 'POST':
forms = completedTaskForm(request.POST)
if forms.is_valid():
formlearningObjectives = forms.cleaned_data['formlearningObjectives']
formdate = forms.cleaned_data['formdate']
formduration = forms.cleaned_data['formduration']
formeducationDepartment = forms.cleaned_data['formeducationDepartment']
formcompletedtasks = forms.cleaned_data['formcompletedtasks']
neueAT=completedTask(date=formdate, duration=formduration, educationDepartment=formeducationDepartment, completedtasks=formcompletedtasks, trainee_id=usernameID)
neueAT.save()
for ct in learningObjective.objects.filter(learningObjectives=formlearningObjectives):
neueAT.learningObjectivecompletedTask.add(ct)
else:
form = completedTask()
print("Es hat fehlgeschlagen!" + formset.errors)
return render(request, 'at.html', {'at': completedTask.objects.all(), 'Lernziel': learningObjective.objects.all()})
因此,我现在有一个字段,我必须为模型completedTask填充该字段。除非有人没有填写实际需要的数据,否则一切正常。我正在写一个应用程序来记录你在工作时间所做的事情,当然你应该立即正确地输入所有内容。但是如果不能立即创建一个条目,则不应该抛出错误。如何使多个字段成为可选字段。我认为我可以简单地创建一个默认值,当用户更新其条目时,该值会被删除。但我不想那样做。在我的数据库中有一个空白条目会很酷,现在就是这样。但当我这样做时,它会给我以下错误:
在/program/create_处出现多值错误
它创建了条目和所有内容,这些都很好,但我想消除错误。是否有一个模板标记,用于检查字段是否有输入?我试图寻找它,但没有成功。如果你需要更多的信息,请告诉我
编辑:(这些是我的表单,第一次使用它们)
没有任何条目了。打印(form.error)
的输出如下:
请引导我,我现在很困。哇,我为自己感到骄傲:p解决方案是表单
from django import forms
from programm.models import trainee, todoList, learningObjective, topic, person, completedTask, remark
class completedTaskForm(forms.Form):
trainee = forms.IntegerField(required = True)
learningObjectivecompletedTask = forms.CharField(required = False)
date = forms.DateField(required = True)
duration = forms.IntegerField(required = True)
documentationReference = forms.CharField(required = False)
educationDepartment = forms.CharField(required = True)
completedtasks = forms.CharField(required = True)
在我的视图中进行此编辑:
class trainee(models.Model):
username = models.TextField(verbose_name = 'username')
class learningObjective(models.Model):
trainee = models.ForeignKey(trainee, verbose_name = "Azubi")
learningObjectives = models.TextField(verbose_name = 'Lernziel')
class completedTask(models.Model):
trainee = models.ForeignKey(trainee, verbose_name = "Azubi")
learningObjectivecompletedTask = models.ManyToManyField(learningObjective, verbose_name = "Lernziel")
date = models.DateField(verbose_name = 'Datum')
duration = models.IntegerField(verbose_name = 'Dauer')
documentationReference = models.TextField(verbose_name = 'Dokumentationsverweis', blank = True)
educationDepartment = models.TextField(verbose_name = 'Ausbildungsabteilung')
completedtasks = models.TextField(verbose_name = 'Ausgefuehrte Taetigkeiten')
@login_required(login_url='login')
def create_at(request):
trainee_objects = trainee.objects.all()
usernameID = 1
for traineeUser in trainee_objects:
if traineeUser.username == request.user.username:
usernameID = traineeUser.id
if request.method == 'POST':
form = completedTaskForm(request.POST)
if form.is_valid():
neueAT=completedTask(date=request.POST['Datum'], duration=request.POST['Dauer'], educationDepartment=request.POST['Abteilung'], completedtasks=request.POST['AT'], trainee_id=usernameID)
neueAT.save()
for ct in learningObjective.objects.filter(learningObjectives=request.POST.get['Lernziel']):
neueAT.learningObjectivecompletedTask.add(ct)
else:
form = completedTask()
return render(request, 'at.html', {'at': completedTask.objects.all(), 'Lernziel': learningObjective.objects.all()})
trainee_objects = trainee.objects.all()
usernameID = 1
for traineeUser in trainee_objects:
if traineeUser.username == request.user.username:
usernameID = traineeUser.id
if request.method == 'POST':
forms = completedTaskForm(request.POST)
if forms.is_valid():
formlearningObjectives = forms.cleaned_data['formlearningObjectives']
formdate = forms.cleaned_data['formdate']
formduration = forms.cleaned_data['formduration']
formeducationDepartment = forms.cleaned_data['formeducationDepartment']
formcompletedtasks = forms.cleaned_data['formcompletedtasks']
neueAT=completedTask(date=formdate, duration=formduration, educationDepartment=formeducationDepartment, completedtasks=formcompletedtasks, trainee_id=usernameID)
neueAT.save()
for ct in learningObjective.objects.filter(learningObjectives=formlearningObjectives):
neueAT.learningObjectivecompletedTask.add(ct)
else:
form = completedTask()
print("Es hat fehlgeschlagen!" + formset.errors)
return render(request, 'at.html', {'at': completedTask.objects.all(), 'Lernziel': learningObjective.objects.all()})
看看这里的表单:这和我两个小时以来做的事情完全一样。我太迟钝了,不能想出解决问题的办法:P我正在努力^^