gpt4 book ai didi

python - Django:表单提交 url 处的 ValueError

转载 作者:行者123 更新时间:2023-11-28 18:38:04 26 4
gpt4 key购买 nike

我正在使用 django-extra-views 中的 CreateWithInlineViewInlineFormset 创建表单。我们将主模型称为Experiment,每个 Experiment 都有多个 Measurements,基本上是从 MeasurementExperiment 的外键。

Measurement 也有一个指向 InstrumentationPoint 的外键,并且需要在提交测量内联表单之前创建 InstrumentationPoint。因此,输入形式基本上是实验模型和测量模型的形式集。

这是 views.py 的一个片段

class MeasurementInline(InlineFormSet):
model = Measurement
form_class = MeasurementInlineForm


class ManualExperimentAddView(CreateWithInlinesView):
model = Experiment
form_class = ManualExperimentAddForm
inlines = [MeasurementInline]
form_title = "Add experiments"
form_id = "AddExperimentForm"
template_name = "manual_add_experiments.html"

def forms_valid(self, form,inlines):
obj = form.save(commit = False)
build = Build.objects.get(pk=self.request.GET['build'])
obj.build = build
for inline in inlines:
if isinstance(inline,MeasurementInline):
obj1 = inline.save(commit=False)
ip = inline.instance.instrumentation_point
obj1.instrumentation_point = InstrumentationPoint.objects.create(build=build, measured_node=ip)
obj1.save()
obj.save()
return super(ManualExperimentAddView, self).forms_valid(form,inlines)

和forms.py

class MeasurementInlineForm(ModelForm):
error_css_class = "error"
required_css_class = "required"
class Meta:
model = Measurement
exclude = []
instrumentation_point = forms.CharField()

class ManualExperimentAddForm(ModelForm):
error_css_class = "error"
required_css_class = "required"
class Meta:
model = Experiment
exclude = ['attachment', 'build']
date = forms.DateField(widget = DateInput())
def is_valid(self):
return True

提交表单后,我得到以下错误堆栈跟踪:

File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in view
71. return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in dispatch
89. return handler(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/extra_views/advanced.py" in post
126. return super(BaseCreateWithInlinesView, self).post(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/extra_views/advanced.py" in post
103. if all_valid(inlines) and form_validated:
File "/usr/local/lib/python2.7/dist-packages/django/forms/formsets.py" in all_valid
439. if not formset.is_valid():
File "/usr/local/lib/python2.7/dist-packages/django/forms/formsets.py" in is_valid
304. self.errors
File "/usr/local/lib/python2.7/dist-packages/django/forms/formsets.py" in errors
278. self.full_clean()
File "/usr/local/lib/python2.7/dist-packages/django/forms/formsets.py" in full_clean
327. self._errors.append(form.errors)
File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in errors
176. self.full_clean()
File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in full_clean
394. self._post_clean()
File "/usr/local/lib/python2.7/dist-packages/django/forms/models.py" in _post_clean
427. self.instance = construct_instance(self, self.instance, opts.fields, construct_instance_exclude)
File "/usr/local/lib/python2.7/dist-packages/django/forms/models.py" in construct_instance
62. f.save_form_data(instance, cleaned_data[f.name])
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py" in save_form_data
874. setattr(instance, self.name, data)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/related.py" in __set__
627. self.field.rel.to._meta.object_name,

Exception Type: ValueError at /new/add_experiments/
Exception Value: Cannot assign "u'xdec'": "Measurement.instrumentation_point" must be a "InstrumentationPoint" instance.

如有任何帮助,我们将不胜感激。

最佳答案

在 forms.py 中 instrumentation_point 字段应该是 InstrumentationPoint 选择

instrumentation_point = forms.ModelChoiceField(
queryset=InstrumentationPoint.objects.all()
)

关于python - Django:表单提交 url 处的 ValueError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30503153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com