mirror of
https://github.com/django/django.git
synced 2025-07-18 16:49:13 +00:00
[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
This commit is contained in:
parent
e7555c09d8
commit
aefb07d865
@ -132,14 +132,19 @@ class InlineAdminForm(AdminForm):
|
|||||||
self.original.content_type_id = ContentType.objects.get_for_model(original).pk
|
self.original.content_type_id = ContentType.objects.get_for_model(original).pk
|
||||||
self.show_url = original and hasattr(original, 'get_absolute_url')
|
self.show_url = original and hasattr(original, 'get_absolute_url')
|
||||||
super(InlineAdminForm, self).__init__(form, fieldsets, prepopulated_fields)
|
super(InlineAdminForm, self).__init__(form, fieldsets, prepopulated_fields)
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
for name, options in self.fieldsets:
|
for name, options in self.fieldsets:
|
||||||
yield InlineFieldset(self.formset, self.form, name, **options)
|
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):
|
def field_count(self):
|
||||||
# tabular.html uses this function for colspan value.
|
# 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"])
|
num_of_fields += len(self.fieldsets[0][1]["fields"])
|
||||||
if self.formset.can_order:
|
if self.formset.can_order:
|
||||||
num_of_fields += 1
|
num_of_fields += 1
|
||||||
@ -149,7 +154,7 @@ class InlineAdminForm(AdminForm):
|
|||||||
|
|
||||||
def pk_field(self):
|
def pk_field(self):
|
||||||
return AdminField(self.form, self.formset._pk_field.name, False)
|
return AdminField(self.form, self.formset._pk_field.name, False)
|
||||||
|
|
||||||
def fk_field(self):
|
def fk_field(self):
|
||||||
fk = getattr(self.formset, "fk", None)
|
fk = getattr(self.formset, "fk", None)
|
||||||
if fk:
|
if fk:
|
||||||
@ -169,14 +174,14 @@ class InlineFieldset(Fieldset):
|
|||||||
def __init__(self, formset, *args, **kwargs):
|
def __init__(self, formset, *args, **kwargs):
|
||||||
self.formset = formset
|
self.formset = formset
|
||||||
super(InlineFieldset, self).__init__(*args, **kwargs)
|
super(InlineFieldset, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
fk = getattr(self.formset, "fk", None)
|
fk = getattr(self.formset, "fk", None)
|
||||||
for field in self.fields:
|
for field in self.fields:
|
||||||
if fk and fk.name == field:
|
if fk and fk.name == field:
|
||||||
continue
|
continue
|
||||||
yield Fieldline(self.form, field)
|
yield Fieldline(self.form, field)
|
||||||
|
|
||||||
class AdminErrorList(forms.util.ErrorList):
|
class AdminErrorList(forms.util.ErrorList):
|
||||||
"""
|
"""
|
||||||
Stores all errors for the form/formsets in an add/change stage view.
|
Stores all errors for the form/formsets in an add/change stage view.
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
{% for fieldset in inline_admin_form %}
|
{% for fieldset in inline_admin_form %}
|
||||||
{% include "admin/includes/fieldset.html" %}
|
{% include "admin/includes/fieldset.html" %}
|
||||||
{% endfor %}
|
{% 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 }}
|
{{ inline_admin_form.fk_field.field }}
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if inline_admin_formset.formset.can_delete %}<th>{% trans "Delete?" %}</th>{% endif %}
|
{% if inline_admin_formset.formset.can_delete %}<th>{% trans "Delete?" %}</th>{% endif %}
|
||||||
</tr></thead>
|
</tr></thead>
|
||||||
|
|
||||||
{% for inline_admin_form in inline_admin_formset %}
|
{% for inline_admin_form in inline_admin_formset %}
|
||||||
{% if inline_admin_form.form.non_field_errors %}
|
{% 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>
|
<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.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 %}
|
{% 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 %}
|
</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 %}
|
{% spaceless %}
|
||||||
{% for fieldset in inline_admin_form %}
|
{% for fieldset in inline_admin_form %}
|
||||||
{% for line in fieldset %}
|
{% for line in fieldset %}
|
||||||
@ -48,22 +49,22 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% if inline_admin_formset.formset.can_delete %}
|
{% if inline_admin_formset.formset.can_delete %}
|
||||||
<td class="delete">{% if inline_admin_form.original %}{{ inline_admin_form.deletion_field.field }}{% endif %}</td>
|
<td class="delete">{% if inline_admin_form.original %}{{ inline_admin_form.deletion_field.field }}{% endif %}</td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{# <ul class="tools"> #}
|
{# <ul class="tools"> #}
|
||||||
{# <li><a class="add" href="">Add another {{ inline_admin_formset.opts.verbose_name|title }}</a></li> #}
|
{# <li><a class="add" href="">Add another {{ inline_admin_formset.opts.verbose_name|title }}</a></li> #}
|
||||||
{# </ul> #}
|
{# </ul> #}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user