Hi,

I am trying to use the inlineformset_factory on an odd model I have
created. Here's the best way I can describe it:

class Base(models.Model):
     title = models.CharField(max_length=55)

    def save(self, *args, **kwargs):
        if self.is_editable():
           # do a bunch of things
           self.pk = None

       super(Base, self).save(*args, **kwargs)

class Inline(models.Model):
    base = models.ForeignKey(Base)

Basically, Base will always create an entirely new instance of itself,
unless the is_editable returns false. This is basically a cheap way of
having a true "version history" of the entire model. It works, until
we get to my foreign key relation.

In my view, I have a simple:

InlineFormset = inlineformset_factory(Base, Inline, extra=0, fields
('id', 'body',))

if request.method == 'POST':
     new_base = form_base.save() # a simple modelform, this is.

     inline_formset = InlineFormset(request.POST, instance=new_base)
     if inline_formset.is_valid():
         inline_formset.save()

As soon as I hit the save(), I get a KeyError: None

Traceback shows it's happening within the core saving function within
django's model.py:
/home/bartek/.virtualenvs/tinyescrow/lib/python2.6/site-packages/
django/forms/models.py in save_existing_objects
        # Put the objects from self.get_queryset into a dict so they
are easy to lookup by pk
        existing_objects = {}
        for obj in self.get_queryset():
            existing_objects[obj.pk] = obj
        saved_instances = []
        for form in self.initial_forms:
            print form.cleaned_data, self._pk_field.name
            obj = existing_objects[form.cleaned_data
[self._pk_field.name]] ...
            if self.can_delete and form.cleaned_data
[DELETION_FIELD_NAME]:
                self.deleted_objects.append(obj)
                obj.delete()
            else:
                if form.changed_data:
                    self.changed_objects.append((obj,
form.changed_data))

So basically, I'm not sure why I would get this KeyError. I am certain
it has something to do with what I'm doing with the Base models
primary key but I am not sure how to get around it. I've used
inlineformset_factory successfully on normal models without weird pk's
so it's a great function, just need to figure this out :)

Thanks in advance for any help.

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to