以下是我的追随者模型:
class SocialProfile(models.Model):
user = models.OneToOneField(User, unique=True)
follows = models.ManyToManyField('self', related_name='followed_by', symmetrical=False)
在管理员中:
class SocialprofileAdmin(admin.ModelAdmin):
model = SocialProfile.follows.through
管理员上面的管理员代码会给我: 整体观点:
我只需要显示用户名而不是SocialProfile对象。 我尝试了几个这样的版本,但它们没有工作:
class FollowsInline(admin.TabularInline):
model = SocialProfile.follows.through
class UserAdmin(admin.ModelAdmin):
list_display = ('user', 'follows')
inlines = [FollowsInline, ]
答案 0 :(得分:1)
要display a human-readable representation,你应该在模型上写一个__str__
(如果使用python2,名称应该是__unicode__
)方法。 Django管理员将使用此方法显示实例,您不需要覆盖或自定义 admin.py 中的任何内容。
在你的情况下,像这样:
class SocialProfile(models.Model):
user = models.OneToOneField(User, unique=True)
follows = models.ManyToManyField('self', related_name='followed_by', symmetrical=False)
def __str__(self):
"""Return human-readable representation"""
return self.user.username