2

次のようなモデル定義があります。

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」を人間化する方法。

4

2 に答える 2

2

管理者の削除に関する質問に表示されているのは、Django が透過的に作成する ManyToMany ブリッジ モデルのインスタンスです。

表現を変更したい場合は__unicode__、独自のブリッジ モデルを定義し、それをthrough パラメータManyToManyFieldで使用するように設定する必要があります。

例:

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)
于 2013-05-02T13:22:10.020 に答える