Django Admin:更改内联多对多字段中显示的列名

Mar*_*z-C 5 django django-models django-admin

我尝试翻译 Django 管理站点,但在ManyToMany TabularInline. 我的models.py是:

class Doctor(models.Model):
    (...)
    specializations = models.ManyToManyField(Specialization, blank=True, verbose_name='Specjalizacje')

    class Meta:
        verbose_name = 'Lekarz'
        verbose_name_plural = 'Lekarze'

class Specialization(models.Model):
    name = models.CharField(max_length=191, verbose_name='Nazwa')

    class Meta:
        verbose_name = 'Specjalizacja'
        verbose_name_plural = 'Specjalizacje'
Run Code Online (Sandbox Code Playgroud)

我的admin.py样子:

class SpecializationInline(admin.TabularInline):
    model = Doctor.specializations.through
    verbose_name = 'Specjalizacja'
    verbose_name_plural = 'Specjalizacja'

@admin.register(Specialization)
class SpecializationAdmin(admin.ModelAdmin):
    list_display = ['name',]

@admin.register(Doctor)
class DoctorAdmin(admin.ModelAdmin):
    inlines = [SpecializationInline,]

    # this field is added as inline
    exclude = ['specializations',]
Run Code Online (Sandbox Code Playgroud)

生成的 Django 管理页面如下所示: Django 管理页面视图

除“专业化”栏外,所有内容均已翻译。我怎样才能改变它的名字?

Eag*_*lus 4

好吧,这不是一个完整的解决方案。但我希望这对你有帮助。在 调用的模板中TabularInlineadmin/edit_inline/tabular.html.

构建表格“标题”部分的部分

 <thead><tr>
   ...
 {% for field in inline_admin_formset.fields %}
   {% if not field.widget.is_hidden %}
     <th{% if field.required %} class="required"{% endif %}>
        {{ field.label|capfirst }}
        ...
     </th>
   {% endif %}
 {% endfor %}
 ...
 </tr></thead>
Run Code Online (Sandbox Code Playgroud)

这告诉我您可以向字段添加标签。因此,通过创建自定义表单

class SpecializationForm(ModelForm):
    specializations = forms.ModelChoiceField(queryset=Specialization.objects.all(), label='Specjalizacja')

    class Meta:
        model = Specialization
        fields = ('specializations', )
Run Code Online (Sandbox Code Playgroud)

并在你的中调用它SpecializationInline

class SpecializationInline(admin.TabularInline):
    model = Doctor.specializations.through
    verbose_name = 'Specjalizacja'
    verbose_name_plural = 'Specjalizacja'
    form = SpecializationForm
Run Code Online (Sandbox Code Playgroud)

这应该允许您更改文本。