diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2009-05-03 13:46:30 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2009-05-03 13:46:30 +0000 |
| commit | aefb07d8654e9b2873ad62d599d53c6f027e94de (patch) | |
| tree | a87224fb82b1fda9df0d90a9652f769413d8cb16 /django/contrib/admin/helpers.py | |
| parent | e7555c09d834a971bfdfa50eb263db6d5288211b (diff) | |
[1.0.X] Fixed #8903 -- Corrected rendering of admin inline formsets (tabular and stacked) when the inline model has a custom non-autofield primary key. Thanks to dgouldin for the patch.
Merge of r10666 from trunk.
git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.0.X@10670 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/contrib/admin/helpers.py')
| -rw-r--r-- | django/contrib/admin/helpers.py | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/django/contrib/admin/helpers.py b/django/contrib/admin/helpers.py index aaa2e304ce..693d61262d 100644 --- a/django/contrib/admin/helpers.py +++ b/django/contrib/admin/helpers.py @@ -132,14 +132,19 @@ class InlineAdminForm(AdminForm): self.original.content_type_id = ContentType.objects.get_for_model(original).pk self.show_url = original and hasattr(original, 'get_absolute_url') super(InlineAdminForm, self).__init__(form, fieldsets, prepopulated_fields) - + def __iter__(self): for name, options in self.fieldsets: yield InlineFieldset(self.formset, self.form, name, **options) - + + def has_auto_field(self): + return self.form._meta.model._meta.has_auto_field + def field_count(self): # tabular.html uses this function for colspan value. - num_of_fields = 1 # always has at least one field + num_of_fields = 0 + if self.has_auto_field(): + num_of_fields += 1 num_of_fields += len(self.fieldsets[0][1]["fields"]) if self.formset.can_order: num_of_fields += 1 @@ -149,7 +154,7 @@ class InlineAdminForm(AdminForm): def pk_field(self): return AdminField(self.form, self.formset._pk_field.name, False) - + def fk_field(self): fk = getattr(self.formset, "fk", None) if fk: @@ -169,14 +174,14 @@ class InlineFieldset(Fieldset): def __init__(self, formset, *args, **kwargs): self.formset = formset super(InlineFieldset, self).__init__(*args, **kwargs) - + def __iter__(self): fk = getattr(self.formset, "fk", None) for field in self.fields: if fk and fk.name == field: continue yield Fieldline(self.form, field) - + class AdminErrorList(forms.util.ErrorList): """ Stores all errors for the form/formsets in an add/change stage view. |
