Django 将来自外部模型的条目设置为可选

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

我有以下型号。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()})
这是我的视图的一部分。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)
的输出如下:

  • 日期
  • 本周 字段为必填项。
  • 持续时间
  • 此字段为必填项。
  • completedtasks
  • 此字段为 必选。
  • 教育部
  • 此字段为必选。

  • 请引导我,我现在很困。

    哇,我为自己感到骄傲: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我正在努力^^