2013-05-02 44 views
2

显示实际的对象我有一个模型认定中,如下所示:Django的:如何在管理

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 

当我使用Django的管理面板“删除”为艺术家管理行动,我得到:

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

你看到在管理什么问题,删除是透明的Django为你创建的多对多桥模型的实例。

如果您想要更改其__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

我不觉得你尝试过什么,我给关于这个问题,尝试,然后回复它不工作ü图片的方式。 – 2013-05-02 09:52:24