【发布时间】:2015-12-05 21:58:38
【问题描述】:
当您拥有我所说的“中间”ManyToMany 表时,就很容易了,就像这样:
class Interrogation(models.Model):
phrases = models.ManyToManyField(Phrase, blank=True,
through='InterrogationPhrase',
symmetrical=False,
related_name='phrase')
class InterrogationPhrase(models.Model):
interrogation = models.ForeignKey(Interrogation, blank=False)
phrase = models.ForeignKey(Phrase, blank=False)
def __str__(self):
return u'({0}) - {1} - {2}'.format(
self.importance, self.interrogation, self.phrase
)
使用上面的代码,在“Inline”管理中,如果我这样声明,它会显示InterrogationPhrase 的__str__:
class InterrogationPhrasesInline(CollapsedStackedInline):
model = InterrogationPhrase
fk_name = 'interrogation'
fields = ('phrase')
extra = 0
verbose_name = _(u"Phrase")
verbose_name_plural = _(u"Phrases")
但是当我不想中间声明而只想写的时候怎么处理:
class Mot(models.Model):
groupes = models.ManyToManyField(Groupe)
没有声明MotGroupe 表(这在Django 中是允许的)?我的管理员是这样的:
class MotGroupesInline(CollapsedStackedInline):
model = Mot.groupes.through
extra = 0
verbose_name = _(u"Groupe")
verbose_name_plural = _(u"Groupes")
class MotAdmin(admin.ModelAdmin):
inlines = (MotGroupesInline,)
但问题在于,对于Groupe 的每一行,内联显示为:Groupe: Mot_groupes object。这既丑陋又无用。怎么改?
【问题讨论】:
标签: django django-models django-admin