I think > results = formset.save(commit=False) > formset.save()
should be > results = formset.save(commit=False) > results.save() Tervitades/Regards Karl Sutt On Thu, Jul 26, 2012 at 10:35 AM, Derek <gamesb...@gmail.com> wrote: > I'd appreciate some help with the following problem, under Django 1.4 > > When running with the models, forms and view as described below, the data > from the form is *not* saved into the model. > > However, when using the test code (shown at the end) in a shell > environment, the data *is* saved as expected. > > How can I tell why the form data is not saved in the view? It appears to > "fail silently" (i.e. no errors reported) - but adding print statements > into the code reveal that the correct data is available just before the > .save() function. Is there a preferred approach for debugging this type of > situation? > > Thanks > Derek > > > # models > class ClientFile(Model): > id = AutoField(primary_key=True) > description = CharField(unique=True, max_length=255) > file = FileField(upload_to='client', storage=CLIENT_STORAGE) > > > class ClientData(Model): > id = AutoField(primary_key=True) > clientfile = ForeignKey(ClientFile) > # > http://code.google.com/p/django-geo/source/browse/trunk/fields.py?r=13#49 > data_set = DictionaryField(blank=True, null=True) > > > # forms > class ClientDataForm(ModelForm): > > class Meta: > abstract = True > model = ClientData > widgets = { > 'data_set': HiddenInput(), > 'clientfile': HiddenInput() > } > > > class ClientDataFormLayout(ClientDataForm): > label = CharField(max_length=255) > top_left = CharField(max_length=255) > bottom_right = CharField(max_length=255) > > def __init__(self, *args, **kwargs): > super(ClientDataForm, self).__init__(*args, **kwargs) > > class Meta(ClientDataForm.Meta): > pass > > def clean(self): > cleaned = self.cleaned_data > # copy for alteration > cleaned_data = copy.deepcopy(self.cleaned_data) > del cleaned_data['data_set'] > del cleaned_data['clientfile'] > cleaned['data_set'] = cleaned_data > return cleaned > > > # view > client_dataform_layout = ClientDataFormLayout() > client = get_object_or_404(ClientFile, pk=1) > initial = {'clientfile': client} > if request.method == 'POST': > formset = client_dataform_layout(request.POST, instance=client) > if formset.is_valid(): > results = formset.save(commit=False) > form_data = formset.cleaned_data # test only > formset.save() > else: > formset = client_dataform_layout(instance=client, initial=initial) > return render_to_response("clients/client_data.html", > locals(), > RequestContext(request)) > > > # test code > formset = ClientDataFormLayout(data {'clientfile': 1, 'data_set': '', > 'top_left': 'AA', 'bottom_right': > 'ZZ', > 'label': 'foobar'}) > print formset.is_valid() > results = formset.save(commit=False) > formset.save() > cd = ClientData.objects.get(clientfile__pk=1) > print cd.data_set > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To post to this group, send email to django-users@googlegroups.com. > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.