Django: ValueError on form submission

I am using CreateWithInlineView

and InlineFormset

from django-extra-views

to create a form. Let's call the main model Experiment

, each experiment has multiple dimensions, mostly the foreign key from Measurement

to Experiment

.

The dimension also has a foreign key for InstrumentationPoint

, and InstrumentationPoint

must be created before submitting the inline dimension form. So the input form is basically a set of Experiment model formulas and a measurement model model.

Here is a snippet from 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)

      

and 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

      

When submitting the form, I get the following error stack trace:

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.

      

Any help would be appreciated.

+3


source to share


1 answer


the field forms.py instrumentation_point should have the choice InstrumentationPoint



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

      

+1


source







All Articles