管理员中的表格内联如下所示:
如何摆脱DateDeCotisation_adherents object
短语?
对于奖励积分,为什么底部有三条空行?
class DatesDeCotisationInline(admin.TabularInline):
model = DateDeCotisation.adherents.through
readonly_fields = ['datedecotisation']
can_delete = False
class DateDeCotisation(models.Model):
date = models.DateTimeField()
adherents = models.ManyToManyField(Adherent, related_name='adherents_du_jour')
def __str__(self): return self.date.strftime('%Y-%m-%d')
class Meta:
verbose_name = "date de cotisation".encode('utf-8')
verbose_name_plural = "dates de cotisation".encode('utf-8')
ordering = ['-date']
答案 0 :(得分:2)
该内联应该从模型according to the documentation的内部verbose_name
类中获取verbose_name_plural
和Meta
。然而,我只是将你的代码转储到最新的django中,它实际上并没有(或者,也许,当你使用.through
时,它只是不会这样做。)
幸运的是,您可以通过直接在verbose_name
内设置verbose_name_plural
和InlineModelAdmin
来覆盖它,即
class DatesDeCotisationInline(admin.TabularInline):
model = DateDeCotisation.adherents.through
readonly_fields = ['datedecotisation']
can_delete = False
verbose_name = 'date de cotisation for adherent'
verbose_name_plural = 'date de cotisation for adherent'
class AdherentAdmin(admin.ModelAdmin):
inlines = [DatesDeCotisationInline]
admin.site.register(models.Adherent, AdherentAdmin)
(抱歉" for"那里但我不会说法语)
管理员在Django 1.10中显示如下:
在一个小小的音符上,你永远不需要在python 3中做.encode('utf-8')
。默认情况下它的蜇声是UTF-8。
class Meta:
verbose_name = "date de cotisation".encode('utf-8')
verbose_name_plural = "dates de cotisation".encode('utf-8')
(我假设你已经在python 3上了,因为你正在使用__str__
)
答案 1 :(得分:1)
在Django 3中,内联管理的每个对象的标题(原始文章中的DateDeCotisation_adherents object
)来自模型的__str__
方法。另外,由于内联管理类的extra
属性,可能会出现额外的行。 admin.InlineModelAdmin
(堆积式和表格式内联的父级)中的默认设置为extra = 3
。在您的嵌入式管理员中,设置extra = 0
。随时查看django.contrib.admin.options.py
中的所有选项。