Hier ist mein Follower-Modell:
class SocialProfile(models.Model):
user = models.OneToOneField(User, unique=True)
follows = models.ManyToManyField("self", related_name="followed_by", symmetrical=False)
In Admin:
class SocialprofileAdmin(admin.ModelAdmin):
model = SocialProfile.follows.through
Der obige Admin-Code im Admin gibt mir: Eine Gesamtansicht:
Ich brauche es nur, um den Benutzernamen anstelle des SocialProfile-Objekts anzuzeigen. Ich habe ein paar Versionen wie dieses versucht, aber sie funktionieren nicht:
class FollowsInline(admin.TabularInline):
model = SocialProfile.follows.through
class UserAdmin(admin.ModelAdmin):
list_display = ("user", "follows")
inlines = [FollowsInline, ]
Antworten:
1 für die Antwort № 1Zu eine menschenlesbare Darstellung anzeigen Du solltest ein schreiben __str__
(Wenn Python2 verwendet wird, sollte der Name sein __unicode__
) Methode auf dem Modell. Django Admin wird diese Methode verwenden, um die Instanzen anzuzeigen, Sie müssen nichts außer Kraft setzen oder anpassen admin.py dafür.
In deinem Fall, so:
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