mirror of
https://github.com/django/django.git
synced 2025-07-05 18:29:11 +00:00
newforms-admin: Changed BoundInlineObject and templates to treat deletion, ordering, and pk fields as special cases for convenience. Also, changed StackedInline not to show a form row for the pk field.
git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@5588 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
836d2e7591
commit
7c10d69527
@ -649,15 +649,12 @@ class BoundInline(object):
|
|||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
for form, original in zip(self.formset.change_forms, self.formset.get_inline_objects()):
|
for form, original in zip(self.formset.change_forms, self.formset.get_inline_objects()):
|
||||||
yield BoundInlineObject(form, original, self.inline_admin)
|
yield BoundInlineObject(self.formset, form, original, self.inline_admin)
|
||||||
for form in self.formset.add_forms:
|
for form in self.formset.add_forms:
|
||||||
yield BoundInlineObject(form, None, self.inline_admin)
|
yield BoundInlineObject(self.formset, form, None, self.inline_admin)
|
||||||
|
|
||||||
def fields(self):
|
def fields(self):
|
||||||
# HACK: each form instance has some extra fields. Getting those fields
|
return self.formset.form_class.base_fields.values()
|
||||||
# from the form class will take some rearranging. Get them from the
|
|
||||||
# first form instance for now.
|
|
||||||
return list(self.formset.forms[0])
|
|
||||||
|
|
||||||
def verbose_name(self):
|
def verbose_name(self):
|
||||||
return self.inline_admin.verbose_name
|
return self.inline_admin.verbose_name
|
||||||
@ -666,7 +663,8 @@ class BoundInline(object):
|
|||||||
return self.inline_admin.verbose_name_plural
|
return self.inline_admin.verbose_name_plural
|
||||||
|
|
||||||
class BoundInlineObject(object):
|
class BoundInlineObject(object):
|
||||||
def __init__(self, form, original, inline_admin):
|
def __init__(self, formset, form, original, inline_admin):
|
||||||
|
self.formset = formset
|
||||||
self.inline_admin = inline_admin
|
self.inline_admin = inline_admin
|
||||||
self.base_form = form
|
self.base_form = form
|
||||||
self.form = AdminForm(form, self.fieldsets(), inline_admin.prepopulated_fields)
|
self.form = AdminForm(form, self.fieldsets(), inline_admin.prepopulated_fields)
|
||||||
@ -682,8 +680,19 @@ class BoundInlineObject(object):
|
|||||||
given HttpRequest object.
|
given HttpRequest object.
|
||||||
"""
|
"""
|
||||||
if self.inline_admin.fields is None:
|
if self.inline_admin.fields is None:
|
||||||
default_fields = [f for f in self.base_form.fields]
|
default_fields = [f for f in self.base_form.base_fields]
|
||||||
yield Fieldset(fields=default_fields)
|
yield Fieldset(fields=default_fields)
|
||||||
else:
|
else:
|
||||||
for name, options in self.opts.fields:
|
for name, options in self.opts.fields:
|
||||||
yield Fieldset(name, options['fields'], classes=options.get('classes', '').split(' '), description=options.get('description'))
|
yield Fieldset(name, options['fields'], classes=options.get('classes', '').split(' '), description=options.get('description'))
|
||||||
|
|
||||||
|
def pk_field(self):
|
||||||
|
return BoundField(self.base_form, self.formset._pk_field_name, False)
|
||||||
|
|
||||||
|
def deletion_field(self):
|
||||||
|
from django.newforms.formsets import DELETION_FIELD_NAME
|
||||||
|
return BoundField(self.base_form, DELETION_FIELD_NAME, False)
|
||||||
|
|
||||||
|
def ordering_field(self):
|
||||||
|
from django.newforms.formsets import ORDERING_FIELD_NAME
|
||||||
|
return BoundField(self.base_form, ORDERING_FIELD_NAME, False)
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
{{ bound_inline_object.pk_field.field }}
|
||||||
|
{% if bound_inline.formset.deletable %}<div class="form-row">{{ bound_inline_object.deletion_field.field }} {{ bound_inline_object.deletion_field.label_tag }}</div>{% endif %}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
<h2>{{ bound_inline.verbose_name_plural|capfirst|escape }}</h2>
|
<h2>{{ bound_inline.verbose_name_plural|capfirst|escape }}</h2>
|
||||||
<table>
|
<table>
|
||||||
<thead><tr>
|
<thead><tr>
|
||||||
|
{% if bound_inline.formset.deletable %}<th>Delete?</th>{% endif %}
|
||||||
{% for field in bound_inline.fields %}
|
{% for field in bound_inline.fields %}
|
||||||
{% if not field.is_hidden %}
|
{% if not field.is_hidden %}
|
||||||
<th>{{ field.label|capfirst|escape }}</th>
|
<th>{{ field.label|capfirst|escape }}</th>
|
||||||
@ -21,15 +22,12 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<tr class="{% cycle row1,row2 %}">
|
<tr class="{% cycle row1,row2 %}">
|
||||||
|
{{ bound_inline_object.pk_field.field }}
|
||||||
|
{% if bound_inline.formset.deletable %}<td>{{ bound_inline_object.deletion_field.field }}</td>{% endif %}
|
||||||
{% for bfset in bound_inline_object.form %}
|
{% for bfset in bound_inline_object.form %}
|
||||||
{% for line in bfset %}
|
{% for line in bfset %}
|
||||||
{% for field in line %}
|
{% for field in line %}
|
||||||
|
<td>{{ field.field }}</td>
|
||||||
{% if not field.field.is_hidden %}
|
|
||||||
<td>{{ field.field }}</td>
|
|
||||||
{% else %}
|
|
||||||
{{ field.field }}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -267,7 +267,8 @@ class BaseModelFormSet(BaseFormSet):
|
|||||||
|
|
||||||
def add_fields(self, form, index):
|
def add_fields(self, form, index):
|
||||||
"""Add a hidden field for the object's primary key."""
|
"""Add a hidden field for the object's primary key."""
|
||||||
form.fields[self.model._meta.pk.attname] = IntegerField(required=False, widget=HiddenInput)
|
self._pk_field_name = self.model._meta.pk.attname
|
||||||
|
form.fields[self._pk_field_name] = IntegerField(required=False, widget=HiddenInput)
|
||||||
super(BaseModelFormSet, self).add_fields(form, index)
|
super(BaseModelFormSet, self).add_fields(form, index)
|
||||||
|
|
||||||
def formset_for_model(model, form=BaseForm, formfield_callback=lambda f: f.formfield(), formset=BaseModelFormSet, extra=1, orderable=False, deletable=False, fields=None):
|
def formset_for_model(model, form=BaseForm, formfield_callback=lambda f: f.formfield(), formset=BaseModelFormSet, extra=1, orderable=False, deletable=False, fields=None):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user