簡體   English   中英

Django刪除另一個模型中沒有更多相關外鍵項的模型實例?

[英]Django deleting a model instance with no more related ForeignKey items in another model?

在下面的模型中,當一個藝術家通過 Admin 被刪除時,它會確認並刪除所有相關的歌曲。 但是,當我通過管理員刪除歌曲時,如果藝術家在歌曲中沒有更多相關項目,我也想刪除藝術家。 Admin 中是否有此模型選項?

這應該如何在不在 ModelAdmin 內的自定義視圖中完成?

class Artist (models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

class Genre (models.Model):
    name = models.CharField(max_length=100)
    def __str__(self):
        return self.name

class Song (models.Model):    
    artist = models.ForeignKey(Artist, on_delete=models.CASCADE)
    genre = models.ForeignKey(Genre, null=True, blank=True, on_delete=models.SET_NULL)
    title = models.CharField(max_length=100)
    mix = models.CharField(max_length=100, blank=True)

    def __str__(self):
        return self.title

可以通過一個Songdelete方法來做到這一點。

def delete(*args, **kwargs): artist = self.artist super(Song, self).delete(*args, **kwargs) if artist.song_set.count() == 0: artist.delete()

或者類似的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM