具有manytomany字段的Django跟随者结构无法在Admin中显示

时间:2017-03-05 07:47:38

标签: django django-admin

以下是我的追随者模型:

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

管理员上面的管理员代码会给我: 整体观点:

enter image description here 在每个配置文件中:

enter image description here

我只需要显示用户名而不是SocialProfile对象。 我尝试了几个这样的版本,但它们没有工作:

class FollowsInline(admin.TabularInline):
    model = SocialProfile.follows.through


class UserAdmin(admin.ModelAdmin):
    list_display = ('user', 'follows')
    inlines = [FollowsInline, ]

1 个答案:

答案 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