Django测试表格有效吗()

2024-09-26 17:49:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我的视图在url中有可选参数。我将这个参数(<int:jobNr>/None)传递给get_form_kwargs中的form

class AddHoursView(LoginRequiredMixin, generic.CreateView):

    form_class = AddHoursForm

    def get_form_kwargs(self):
        # pass "jobNr" keyword argument from current url to form
        kwargs = super(AddHoursView, self).get_form_kwargs()
        kwargs[JOB_PARAM] = self.kwargs.get(JOB_PARAM)
        return kwargs

    def form_valid(self, form):
        self.object = form.save(commit = False)

        # If url/jobNR take jobNr from URL, if not take from form
        try:
            jobNr = self.kwargs[JOB_PARAM]
        except KeyError:
            jobNr = form.cleaned_data[JOB_WORKER].jobNr

        job = models.Job.objects.get(jobNr = jobNr)

        jobWorker = models.JobWorker.objects.get_or_create(job = job,
                                                user = self.request.user)
        self.object.jobWorker = jobWorker[0]
        self.object.save()
        return HttpResponseRedirect(reverse('worktime:myjobs'))

格式为__init__如果url /foo/jobNr/创建带有url参数的self.jobNr。如果url /foo/则创建新字段。在

^{pr2}$

现在我想为表单编写测试代码。这就是我试过的

    def test_no_jobNr_in_url_and_no_date(self):

        job = Job.objects.create(jobNr = 1, street = 'a', city = 'a',
                            zip = 'a')

        form_data = {'description': 'description', 'hours': 20}
        form = AddHoursForm(form_data)
        # Override field jobWorker after __init__ form
        form.fields['jobWorker'] = job


        self.assertFalse(form.is_valid())

这就是我得到的AttributeError: 'Job' object has no attribute 'disabled'5小时后我需要帮助。我不知道了。在


Tags: fromselfformurldata参数getobject
1条回答
网友
1楼 · 发布于 2024-09-26 17:49:44

您不能将job分配给表单域(这就是form.fields['jobWorker']是什么)。如果要指定初始值,应执行以下操作:

form.fields['jobWorker'].initial = job

但是我认为您希望传递job作为所选模型,您应该在数据中这样做:

^{pr2}$

相关问题 更多 >

    热门问题