【发布时间】:2017-06-27 03:20:47
【问题描述】:
我有以下模型(简化):
class Concert(models.Model):
title = models.CharField(max_length=50)
date = models.DateField()
songs = models.ManyToManyField(Song,
through='RunOrder',
related_name='run_order',
blank=True)
class Song(models.Model):
title = models.CharField(max_length=50)
class RunOrder(models.Model):
concert = models.ForeignKey(Concert, on_delete=models.CASCADE)
song = models.ForeignKey(Song, on_delete=models.CASCADE)
act_no = models.SmallIntegerField()
scene_no = models.SmallIntegerField()
基本上,歌曲可以在多场音乐会中,音乐会有多首歌曲。
在管理视图中创建新音乐会时,我希望能够添加新歌曲。这是我所拥有的:
class ConcertAdmin(admin.ModelAdmin):
...
inlines = [SongInline]
class SongInline(admin.TabularInline):
model = RunOrder
show_change_link = True
extra = 1
但这只能让我从现有歌曲中进行选择。为了添加一首新歌,我必须使用 Song 管理界面。当我尝试使用Song 作为SongInline 的模型时,出现has no ForeignKey 错误。有没有一种方法可以简化/内联将新歌曲添加到音乐会的过程?
【问题讨论】: