0

I have the following TabularInline:

class ProcessVariableInlineAdmin(TabularInline):
    model = ProcessVariable
    fields = (
        "variable",
        "station_rank",
    )
    readonly_fields = (
        "variable",
        "station_rank",
    )

... and would like to remove the small line variables on each row:

extra variable labels in inline

I tried poking around on the django docs for TabularInline but came up short. Is there a way to do this that I'm overlooking? Thank you in advance!

class ProcessVariable(DateUserFieldsAbstract):
        id = models.BigAutoField(
        auto_created=True,
        primary_key=True,
        serialize=False,
        verbose_name='ID')
    variable = models.CharField(max_length=100, verbose_name='')
    placeholder = models.CharField(max_length=150, default='', blank=True)
    variable_type = models.CharField(
        max_length=25,
        default="Text",
        choices=settings.PROCESS_VARIABLE_TYPES)
    station = models.ForeignKey(
        'Station',
        on_delete=models.PROTECT,
        null=True,
        blank=True)
    station_rank = models.IntegerField(null=True, blank=True)
    is_required = models.BooleanField(default=False)
    is_disabled = models.BooleanField(default=False)
    state = models.BooleanField(default=True,
                                choices=settings.PROCESS_VARIABLE_STATE)

    def __str__(self):
        return "{}".format(self.variable)

    class Meta:
        constraints = [
            UniqueConstraint(
                fields=["variable", "station"], name="unique_variable_station"
            )
        ]
Asa LeHolland
  • 372
  • 4
  • 12
  • 1
    Can you share your `ProcessVariable` model with us? – tony May 26 '22 at 21:27
  • 1
    @TonyN, yes! I've updated the description. – Asa LeHolland May 26 '22 at 21:30
  • 1
    Where does `station_rank` come from in `ProcessVariableInlineAdmin`, since it's not in the model? Is this your full `ProcessVariableInlineAdmin`? Does `ProcessVariable` itself have an `admin`? – tony May 26 '22 at 21:39
  • 1
    Does adding `verbose_name=''` in the field changing anything? Is this issue similar to https://stackoverflow.com/q/72227700/1396928? – tony May 26 '22 at 21:41
  • ProcessVariable has its own admin. I set `variable = models.CharField(max_length=100, verbose_name='')` and that did not change my inline admin. Woops! `station_rank` is actually on the model, I just copied from the wrong branch initially. I've updated the description again. – Asa LeHolland May 26 '22 at 21:48

1 Answers1

0

I am not sure if you can do it using the options provided by the TabularInline class or its ancestors. However, you can override the template.

Disclaimer: the code of the template is taken from Django 4.0.3. If you have a different version, it can most probably be found under django/contrib/admin/templates/admin/edit_inline/tabular.html. If you have Django 4 try copy-pasting the code below and set the template variable on your TabularInline admin to see if it works.

Please note the commented-out line.

{% load i18n admin_urls static admin_modify %}
<div class="js-inline-admin-formset inline-group" id="{{ inline_admin_formset.formset.prefix }}-group"
     data-inline-type="tabular"
     data-inline-formset="{{ inline_admin_formset.inline_formset_data }}">
  <div class="tabular inline-related {% if forloop.last %}last-related{% endif %}">
{{ inline_admin_formset.formset.management_form }}
<fieldset class="module {{ inline_admin_formset.classes }}">
   {% if inline_admin_formset.formset.max_num == 1 %}
     <h2>{{ inline_admin_formset.opts.verbose_name|capfirst }}</h2>
   {% else %}
     <h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
   {% endif %}
   {{ inline_admin_formset.formset.non_form_errors }}
   <table>
     <thead><tr>
       <th class="original"></th>
     {% for field in inline_admin_formset.fields %}
       <th class="column-{{ field.name }}{% if field.required %} required{% endif %}{% if field.widget.is_hidden %} hidden{% endif %}">{{ field.label|capfirst }}
       {% if field.help_text %}<img src="{% static "admin/img/icon-unknown.svg" %}" class="help help-tooltip" width="10" height="10" alt="({{ field.help_text|striptags }})" title="{{ field.help_text|striptags }}">{% endif %}
       </th>
     {% endfor %}
     {% if inline_admin_formset.formset.can_delete and inline_admin_formset.has_delete_permission %}<th>{% translate "Delete?" %}</th>{% endif %}
     </tr></thead>

     <tbody>
     {% for inline_admin_form in inline_admin_formset %}
        {% if inline_admin_form.form.non_field_errors %}
        <tr class="row-form-errors"><td colspan="{{ inline_admin_form|cell_count }}">{{ inline_admin_form.form.non_field_errors }}</td></tr>
        {% endif %}
        <tr class="form-row {% if inline_admin_form.original or inline_admin_form.show_url %}has_original{% endif %}{% if forloop.last and inline_admin_formset.has_add_permission %} empty-form{% endif %}"
             id="{{ inline_admin_formset.formset.prefix }}-{% if not forloop.last %}{{ forloop.counter0 }}{% else %}empty{% endif %}">
        <td class="original">
          {% if inline_admin_form.original or inline_admin_form.show_url %}<p>
          {% if inline_admin_form.original %}
{#          HERE! This is the line that prints the annoying small label. #}
{#          {{ inline_admin_form.original }}#}
          {% if inline_admin_form.model_admin.show_change_link and inline_admin_form.model_admin.has_registered_model %}<a href="{% url inline_admin_form.model_admin.opts|admin_urlname:'change' inline_admin_form.original.pk|admin_urlquote %}" class="{% if inline_admin_formset.has_change_permission %}inlinechangelink{% else %}inlineviewlink{% endif %}">{% if inline_admin_formset.has_change_permission %}{% translate "Change" %}{% else %}{% translate "View" %}{% endif %}</a>{% endif %}
          {% endif %}
          {% if inline_admin_form.show_url %}<a href="{{ inline_admin_form.absolute_url }}">{% translate "View on site" %}</a>{% endif %}
            </p>{% endif %}
          {% if inline_admin_form.needs_explicit_pk_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
          {% if inline_admin_form.fk_field %}{{ inline_admin_form.fk_field.field }}{% endif %}
        </td>
        {% for fieldset in inline_admin_form %}
          {% for line in fieldset %}
            {% for field in line %}
              <td class="{% if field.field.name %}field-{{ field.field.name }}{% endif %}{% if field.field.is_hidden %} hidden{% endif %}">
              {% if field.is_readonly %}
                  <p>{{ field.contents }}</p>
              {% else %}
                  {{ field.field.errors.as_ul }}
                  {{ field.field }}
              {% endif %}
              </td>
            {% endfor %}
          {% endfor %}
        {% endfor %}
        {% if inline_admin_formset.formset.can_delete and inline_admin_formset.has_delete_permission %}
          <td class="delete">{% if inline_admin_form.original %}{{ inline_admin_form.deletion_field.field }}{% endif %}</td>
        {% endif %}
        </tr>
     {% endfor %}
     </tbody>
   </table>
</fieldset>
  </div>
</div>

vinkomlacic
  • 1,822
  • 1
  • 9
  • 19