2013-05-02 5 views
2

У меня есть модель Defination следующим образом:Джанго: как отображать реальные объекты в админ

class Artist(models.Model): 
    """Model class to record Artist""" 
    artist_name = models.CharField(max_length=200) 
    artist_id = models.CharField(unique=True, max_length=50) 
    # similar relationship is defined. 
    related_to = models.ManyToManyField("self", null=True, blank=True) 

    def __unicode__(self): 
     return self.artist_name 

, когда я использую «удалить» действия администратора для художников из панели администратора Джанго»я получаю:

Artist: trojan 

    From_artist-to_artist relationship: Artist_related_to object 
    From_artist-to_artist relationship: Artist_related_to object 
    From_artist-to_artist relationship: Artist_related_to object 
    From_artist-to_artist relationship: Artist_related_to object 

Artist: betty 

    From_artist-to_artist relationship: Artist_related_to object 
    From_artist-to_artist relationship: Artist_related_to object 

Как получить фактические отношения, которые я предупреждаю во время удаления?

другими словами, как гуманизировать «Artist_related_to object», чтобы отразить фактическое имя исполнителя.

ответ

2

То, что вы видите в админ удалить вопрос являются экземпляры модели моста ManyToMany что Джанго прозрачно создает для вас.

Если вы хотите изменить представление своих __unicode__, вам нужно будет определить свою собственную модель моста и установить ManyToManyField, чтобы использовать ее с помощью through parameter.

Пример:

class ArtistRelationship(models.Model): 
    from_artist = models.ForeignKey('Artist') 
    to_artist = models.ForeignKey('Artist') 

    def __unicode__(self): 
     return u"%s - %s" % (self.from_artist.name, self.to_artist.name) 


class Artist(models.Model): 
    name = models.CharField(max_length=200) 
    # ... more fields ... 
    related_to = models.ManyToManyField("self", null=True, blank=True, 
             through=ArtistRelationship) 
-2

Возвращение должно быть строкой вместо CharField, попробуйте следующее: return u"%s" % (self.artist_name,)

+0

я не думаю, что у попробовал то, что я дал по этому вопросу, попробовать и ответить он не работает так, как у картины. –