Skip to content

Commit

Permalink
Fixed #211 -- edit_inline_type is deprecated, in favor of edit_inline…
Browse files Browse the repository at this point in the history
… itself. For example, instead of 'edit_inline=True, edit_inline_type=meta.TABULAR', use 'edit_inline=meta.TABULAR'.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@440 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
adrianholovaty committed Aug 9, 2005
1 parent e79eb09 commit 4f00611
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 25 deletions.
2 changes: 1 addition & 1 deletion django/core/meta/__init__.py
Expand Up @@ -291,7 +291,7 @@ def get_all_related_objects(self):
# relationship we're adding. # relationship we're adding.
link_field = copy.copy(core.RelatedLink._meta.get_field('object_id')) link_field = copy.copy(core.RelatedLink._meta.get_field('object_id'))
link_field.rel = ManyToOne(self.get_model_module().Klass, 'related_links', 'id', link_field.rel = ManyToOne(self.get_model_module().Klass, 'related_links', 'id',
num_in_admin=3, min_num_in_admin=3, edit_inline=True, edit_inline_type=TABULAR, num_in_admin=3, min_num_in_admin=3, edit_inline=TABULAR,
lookup_overrides={ lookup_overrides={
'content_type__package__label__exact': self.app_label, 'content_type__package__label__exact': self.app_label,
'content_type__python_module_name__exact': self.module_name 'content_type__python_module_name__exact': self.module_name
Expand Down
25 changes: 17 additions & 8 deletions django/core/meta/fields.py
Expand Up @@ -15,7 +15,7 @@
BLANK_CHOICE_DASH = [("", "---------")] BLANK_CHOICE_DASH = [("", "---------")]
BLANK_CHOICE_NONE = [("", "None")] BLANK_CHOICE_NONE = [("", "None")]


# Values for Relation.edit_inline_type. # Values for Relation.edit_inline.
TABULAR, STACKED = 1, 2 TABULAR, STACKED = 1, 2


RECURSIVE_RELATIONSHIP_CONSTANT = 'self' RECURSIVE_RELATIONSHIP_CONSTANT = 'self'
Expand Down Expand Up @@ -531,13 +531,18 @@ def __init__(self, to, to_field=None, rel_name=None, **kwargs):
kwargs['name'] = kwargs.get('name', to_name + '_id') kwargs['name'] = kwargs.get('name', to_name + '_id')
kwargs['verbose_name'] = kwargs.get('verbose_name', to._meta.verbose_name) kwargs['verbose_name'] = kwargs.get('verbose_name', to._meta.verbose_name)
rel_name = rel_name or to_name rel_name = rel_name or to_name

if kwargs.has_key('edit_inline_type'):
import warnings
warnings.warn("edit_inline_type is deprecated. Use edit_inline instead.")
kwargs['edit_inline'] = kwargs.pop('edit_inline_type')

kwargs['rel'] = ManyToOne(to, rel_name, to_field, kwargs['rel'] = ManyToOne(to, rel_name, to_field,
num_in_admin=kwargs.pop('num_in_admin', 3), num_in_admin=kwargs.pop('num_in_admin', 3),
min_num_in_admin=kwargs.pop('min_num_in_admin', None), min_num_in_admin=kwargs.pop('min_num_in_admin', None),
max_num_in_admin=kwargs.pop('max_num_in_admin', None), max_num_in_admin=kwargs.pop('max_num_in_admin', None),
num_extra_on_change=kwargs.pop('num_extra_on_change', 1), num_extra_on_change=kwargs.pop('num_extra_on_change', 1),
edit_inline=kwargs.pop('edit_inline', False), edit_inline=kwargs.pop('edit_inline', False),
edit_inline_type=kwargs.pop('edit_inline_type', STACKED),
related_name=kwargs.pop('related_name', None), related_name=kwargs.pop('related_name', None),
limit_choices_to=kwargs.pop('limit_choices_to', None), limit_choices_to=kwargs.pop('limit_choices_to', None),
lookup_overrides=kwargs.pop('lookup_overrides', None), lookup_overrides=kwargs.pop('lookup_overrides', None),
Expand Down Expand Up @@ -573,10 +578,15 @@ def __init__(self, to, to_field=None, rel_name=None, **kwargs):
kwargs['verbose_name'] = kwargs.get('verbose_name', 'ID') kwargs['verbose_name'] = kwargs.get('verbose_name', 'ID')
to_field = to_field or to._meta.pk.name to_field = to_field or to._meta.pk.name
rel_name = rel_name or to._meta.object_name.lower() rel_name = rel_name or to._meta.object_name.lower()

if kwargs.has_key('edit_inline_type'):
import warnings
warnings.warn("edit_inline_type is deprecated. Use edit_inline instead.")
kwargs['edit_inline'] = kwargs.pop('edit_inline_type')

kwargs['rel'] = OneToOne(to, rel_name, to_field, kwargs['rel'] = OneToOne(to, rel_name, to_field,
num_in_admin=kwargs.pop('num_in_admin', 0), num_in_admin=kwargs.pop('num_in_admin', 0),
edit_inline=kwargs.pop('edit_inline', False), edit_inline=kwargs.pop('edit_inline', False),
edit_inline_type=kwargs.pop('edit_inline_type', STACKED),
related_name=kwargs.pop('related_name', None), related_name=kwargs.pop('related_name', None),
limit_choices_to=kwargs.pop('limit_choices_to', None), limit_choices_to=kwargs.pop('limit_choices_to', None),
lookup_overrides=kwargs.pop('lookup_overrides', None), lookup_overrides=kwargs.pop('lookup_overrides', None),
Expand All @@ -586,7 +596,7 @@ def __init__(self, to, to_field=None, rel_name=None, **kwargs):


class ManyToOne: class ManyToOne:
def __init__(self, to, name, field_name, num_in_admin=3, min_num_in_admin=None, def __init__(self, to, name, field_name, num_in_admin=3, min_num_in_admin=None,
max_num_in_admin=None, num_extra_on_change=1, edit_inline=False, edit_inline_type=STACKED, max_num_in_admin=None, num_extra_on_change=1, edit_inline=False,
related_name=None, limit_choices_to=None, lookup_overrides=None, raw_id_admin=False): related_name=None, limit_choices_to=None, lookup_overrides=None, raw_id_admin=False):
try: try:
self.to = to._meta self.to = to._meta
Expand All @@ -596,8 +606,7 @@ def __init__(self, to, name, field_name, num_in_admin=3, min_num_in_admin=None,
self.name, self.field_name = name, field_name self.name, self.field_name = name, field_name
self.num_in_admin, self.edit_inline = num_in_admin, edit_inline self.num_in_admin, self.edit_inline = num_in_admin, edit_inline
self.min_num_in_admin, self.max_num_in_admin = min_num_in_admin, max_num_in_admin self.min_num_in_admin, self.max_num_in_admin = min_num_in_admin, max_num_in_admin
self.num_extra_on_change = num_extra_on_change self.num_extra_on_change, self.related_name = num_extra_on_change, related_name
self.edit_inline_type, self.related_name = edit_inline_type, related_name
self.limit_choices_to = limit_choices_to or {} self.limit_choices_to = limit_choices_to or {}
self.lookup_overrides = lookup_overrides or {} self.lookup_overrides = lookup_overrides or {}
self.raw_id_admin = raw_id_admin self.raw_id_admin = raw_id_admin
Expand All @@ -621,11 +630,11 @@ def __init__(self, to, name, num_in_admin=0, related_name=None,


class OneToOne(ManyToOne): class OneToOne(ManyToOne):
def __init__(self, to, name, field_name, num_in_admin=0, edit_inline=False, def __init__(self, to, name, field_name, num_in_admin=0, edit_inline=False,
edit_inline_type=STACKED, related_name=None, limit_choices_to=None, lookup_overrides=None, related_name=None, limit_choices_to=None, lookup_overrides=None,
raw_id_admin=False): raw_id_admin=False):
self.to, self.name, self.field_name = to._meta, name, field_name self.to, self.name, self.field_name = to._meta, name, field_name
self.num_in_admin, self.edit_inline = num_in_admin, edit_inline self.num_in_admin, self.edit_inline = num_in_admin, edit_inline
self.edit_inline_type, self.related_name = edit_inline_type, related_name self.related_name = related_name
self.limit_choices_to = limit_choices_to or {} self.limit_choices_to = limit_choices_to or {}
self.lookup_overrides = lookup_overrides or {} self.lookup_overrides = lookup_overrides or {}
self.raw_id_admin = raw_id_admin self.raw_id_admin = raw_id_admin
Expand Down
6 changes: 3 additions & 3 deletions django/views/admin/main.py
Expand Up @@ -608,11 +608,11 @@ def _get_template(opts, app_label, add=False, change=False, show_delete=False, f
for rel_obj, rel_field in opts.get_inline_related_objects(): for rel_obj, rel_field in opts.get_inline_related_objects():
var_name = rel_obj.object_name.lower() var_name = rel_obj.object_name.lower()
field_list = [f for f in rel_obj.fields + rel_obj.many_to_many if f.editable and f != rel_field] field_list = [f for f in rel_obj.fields + rel_obj.many_to_many if f.editable and f != rel_field]
t.append('<fieldset class="module%s">\n' % ((rel_field.rel.edit_inline_type != meta.TABULAR) and ' aligned' or '')) t.append('<fieldset class="module%s">\n' % ((rel_field.rel.edit_inline != meta.TABULAR) and ' aligned' or ''))
view_on_site = '' view_on_site = ''
if change and hasattr(rel_obj, 'get_absolute_url'): if change and hasattr(rel_obj, 'get_absolute_url'):
view_on_site = '{%% if %s.original %%}<a href="/r/{{ %s.content_type_id }}/{{ %s.original.id }}/">View on site</a>{%% endif %%}' % (var_name, var_name, var_name) view_on_site = '{%% if %s.original %%}<a href="/r/{{ %s.content_type_id }}/{{ %s.original.id }}/">View on site</a>{%% endif %%}' % (var_name, var_name, var_name)
if rel_field.rel.edit_inline_type == meta.TABULAR: if rel_field.rel.edit_inline == meta.TABULAR:
t.append('<h2>%s</h2>\n<table>\n' % capfirst(rel_obj.verbose_name_plural)) t.append('<h2>%s</h2>\n<table>\n' % capfirst(rel_obj.verbose_name_plural))
t.append('<thead><tr>') t.append('<thead><tr>')
for f in field_list: for f in field_list:
Expand Down Expand Up @@ -654,7 +654,7 @@ def _get_template(opts, app_label, add=False, change=False, show_delete=False, f
t.append('{%% for %s in form.%s %%}\n' % (var_name, rel_obj.module_name)) t.append('{%% for %s in form.%s %%}\n' % (var_name, rel_obj.module_name))
t.extend(hidden_fields) t.extend(hidden_fields)
t.append('{% endfor %}\n') t.append('{% endfor %}\n')
else: # edit_inline_type == STACKED else: # edit_inline == STACKED
t.append('{%% for %s in form.%s %%}' % (var_name, rel_obj.module_name)) t.append('{%% for %s in form.%s %%}' % (var_name, rel_obj.module_name))
t.append('<h2>%s #{{ forloop.counter }}</h2>' % capfirst(rel_obj.verbose_name)) t.append('<h2>%s #{{ forloop.counter }}</h2>' % capfirst(rel_obj.verbose_name))
if view_on_site: if view_on_site:
Expand Down
2 changes: 1 addition & 1 deletion docs/db-api.txt
Expand Up @@ -20,7 +20,7 @@ Throughout this reference, we'll refer to the following Poll application::


class Choice(meta.Model): class Choice(meta.Model):
fields = ( fields = (
meta.ForeignKey(Poll, edit_inline=True, edit_inline_type=meta.TABULAR, meta.ForeignKey(Poll, edit_inline=meta.TABULAR,
num_in_admin=10, min_num_in_admin=5), num_in_admin=10, min_num_in_admin=5),
meta.CharField('choice', maxlength=255, core=True), meta.CharField('choice', maxlength=255, core=True),
meta.IntegerField('votes', editable=False, default=0), meta.IntegerField('votes', editable=False, default=0),
Expand Down
13 changes: 5 additions & 8 deletions docs/model-api.txt
Expand Up @@ -316,16 +316,13 @@ Field Types
======================= ============================================================ ======================= ============================================================
Argument Description Argument Description
======================= ============================================================ ======================= ============================================================
``edit_inline`` If ``True``, this related object is edited ``edit_inline`` If not ``False``, this related object is edited
"inline" on the related object's page. This means "inline" on the related object's page. This means
that the object will not have its own admin that the object will not have its own admin
interface. interface. Use either ``meta.TABULAR`` or ``meta.STACKED``,

which, respectively, designate whether the inline-editable
``edit_inline_type`` This is either ``meta.TABULAR`` or objects are displayed as a table or as a "stack" of
``meta.STACKED`` and controls whether the inline fieldsets.
editable objects are displayed as a table or as
a "stack" of fieldsets. Defaults to
``meta.STACKED``.


``limit_choices_to`` A dictionary of lookup arguments and values (see ``limit_choices_to`` A dictionary of lookup arguments and values (see
the `Database API reference`_) that limit the the `Database API reference`_) that limit the
Expand Down
8 changes: 4 additions & 4 deletions docs/tutorial02.txt
Expand Up @@ -242,7 +242,7 @@ Poll object. Let's make that happen.
Remove the ``admin`` for the Choice model. Then, edit the ``ForeignKey(Poll)`` Remove the ``admin`` for the Choice model. Then, edit the ``ForeignKey(Poll)``
field like so:: field like so::


meta.ForeignKey(Poll, edit_inline=True, num_in_admin=3), meta.ForeignKey(Poll, edit_inline=meta.STACKED, num_in_admin=3),


This tells Django: "Choice objects are edited on the Poll admin page. By This tells Django: "Choice objects are edited on the Poll admin page. By
default, provide enough fields for 3 Choices." default, provide enough fields for 3 Choices."
Expand Down Expand Up @@ -274,10 +274,10 @@ One small problem, though. It takes a lot of screen space to display all the
fields for entering related Choice objects. For that reason, Django offers an fields for entering related Choice objects. For that reason, Django offers an
alternate way of displaying inline related objects:: alternate way of displaying inline related objects::


meta.ForeignKey(Poll, edit_inline=True, num_in_admin=3, edit_inline_type=meta.TABULAR), meta.ForeignKey(Poll, edit_inline=meta.TABULAR, num_in_admin=3),


With that ``edit_inline_type=meta.TABULAR``, the related objects are displayed With that ``edit_inline=meta.TABULAR`` (instead of ``meta.STACKED``), the
in a more compact, table-based format: related objects are displayed in a more compact, table-based format:


.. image:: http://media.djangoproject.com/img/doc/tutorial/admin12.png .. image:: http://media.djangoproject.com/img/doc/tutorial/admin12.png
:alt: Add poll page now has more compact choices :alt: Add poll page now has more compact choices
Expand Down

0 comments on commit 4f00611

Please sign in to comment.