Author: russellm
Date: 2009-05-03 08:46:30 -0500 (Sun, 03 May 2009)
New Revision: 10670
Modified:
django/branches/releases/1.0.X/django/contrib/admin/helpers.py
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/stacked.html
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/tabular.html
Log:
[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.
Modified: django/branches/releases/1.0.X/django/contrib/admin/helpers.py
===================================================================
--- django/branches/releases/1.0.X/django/contrib/admin/helpers.py
2009-05-03 13:45:26 UTC (rev 10669)
+++ django/branches/releases/1.0.X/django/contrib/admin/helpers.py
2009-05-03 13:46:30 UTC (rev 10670)
@@ -132,14 +132,19 @@
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 @@
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 @@
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.
Modified:
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/stacked.html
===================================================================
---
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/stacked.html
2009-05-03 13:45:26 UTC (rev 10669)
+++
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/stacked.html
2009-05-03 13:46:30 UTC (rev 10670)
@@ -17,7 +17,7 @@
{% for fieldset in inline_admin_form %}
{% include "admin/includes/fieldset.html" %}
{% endfor %}
- {{ inline_admin_form.pk_field.field }}
+ {% if inline_admin_form.has_auto_field %}{{ inline_admin_form.pk_field.field
}}{% endif %}
{{ inline_admin_form.fk_field.field }}
</div>
{% endfor %}
Modified:
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/tabular.html
===================================================================
---
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/tabular.html
2009-05-03 13:45:26 UTC (rev 10669)
+++
django/branches/releases/1.0.X/django/contrib/admin/templates/admin/edit_inline/tabular.html
2009-05-03 13:46:30 UTC (rev 10670)
@@ -14,7 +14,7 @@
{% endfor %}
{% if inline_admin_formset.formset.can_delete %}<th>{% trans "Delete?"
%}</th>{% endif %}
</tr></thead>
-
+
{% for inline_admin_form in inline_admin_formset %}
{% if inline_admin_form.form.non_field_errors %}
<tr><td colspan="{{ inline_admin_form.field_count }}">{{
inline_admin_form.form.non_field_errors }}</td></tr>
@@ -26,7 +26,8 @@
{% if inline_admin_form.original %} {{ inline_admin_form.original
}}{% endif %}
{% if inline_admin_form.show_url %}<a href="../../../r/{{
inline_admin_form.original.content_type_id }}/{{ inline_admin_form.original.id
}}/">{% trans "View on site" %}</a>{% endif %}
</p>{% endif %}
- {{ inline_admin_form.pk_field.field }} {{
inline_admin_form.fk_field.field }}
+ {% if inline_admin_form.has_auto_field %}{{
inline_admin_form.pk_field.field }}{% endif %}
+ {{ inline_admin_form.fk_field.field }}
{% spaceless %}
{% for fieldset in inline_admin_form %}
{% for line in fieldset %}
@@ -48,22 +49,22 @@
{% endfor %}
{% endfor %}
{% endfor %}
-
+
{% if inline_admin_formset.formset.can_delete %}
<td class="delete">{% if inline_admin_form.original %}{{
inline_admin_form.deletion_field.field }}{% endif %}</td>
{% endif %}
-
+
</tr>
{% endfor %}
-
+
</table>
-
+
</fieldset>
</div>
-
+
{# <ul class="tools"> #}
{# <li><a class="add" href="">Add another {{
inline_admin_formset.opts.verbose_name|title }}</a></li> #}
{# </ul> #}
-
+
</div>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---