Tu je môj model nasledovateľa:
class SocialProfile(models.Model):
user = models.OneToOneField(User, unique=True)
follows = models.ManyToManyField("self", related_name="followed_by", symmetrical=False)
V administrátorovi:
class SocialprofileAdmin(admin.ModelAdmin):
model = SocialProfile.follows.through
Vyššie uvedený administrátorský kód v admin vám dá: Celkový pohľad:
Potrebujem len zobraziť používateľské meno namiesto objektu SocialProfile. Vyskúšal som niekoľko takýchto verzií, ale nefungujú:
class FollowsInline(admin.TabularInline):
model = SocialProfile.follows.through
class UserAdmin(admin.ModelAdmin):
list_display = ("user", "follows")
inlines = [FollowsInline, ]
odpovede:
1 pre odpoveď č. 1na zobraziť ľudsky čitateľnú reprezentáciu mali by ste napísať a __str__
(ak používate python2 by mal byť názov __unicode__
) na modeli. Administrátor Django použije túto metódu na zobrazenie inštancií, nie je potrebné prepísať alebo prispôsobiť nič admin.py pre to.
Vo vašom prípade takto:
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