这是我的播放列表&歌曲模型:
class Song(models.Model):
song_title = models.CharField(max_length=200, null=False, blank=False)
def __str__(self):
return self.song_title
class Playlist(models.Model):
name = models.CharField(max_length=200, null=False, blank=False,default='')
songs = models.ManyToManyField('Song')
def __str__(self):
return self.name
@property
def playlist_id(self):
return self.id
这是我的模板:
<div class="dropdown">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Add to playlist<span class="caret"></span></button>
<ul class="dropdown-menu">
{% for playlist in all_playlists %}
<li><button onclick="{{playlist.songs.add(song)}}">{{playlist.name}}</button></li>
{% endfor %}
</ul>
</div>
当用户点击下拉按钮&#39;添加到播放列表&#39;时,会显示播放列表的下拉列表。但我想要的是当用户点击播放列表时,歌曲应该被添加到播放列表的歌曲字段中。为此,我创建了一个action = playlists.songs.add(song)
的按钮。当我渲染它时,它返回了这个错误:
无法解析余数:&#39;(歌曲)&#39;从 &#39; playlist.songs.add(歌曲)&#39;
所以我启动了django shell然后键入了同样的东西,它在shell中工作但不在模板中。这是我的shell日志。
In [1]: from music.models import Song, Playlist
In [2]: s = Song.objects.get(pk=2)
In [3]: p1 = Playlist.objects.get(pk=2)
In [4]: p1.songs.add(s)
In [5]: p1.songs.all()
Out[5]: [<Song: Shape of you>]
非常感谢您的帮助。
答案 0 :(得分:0)
这是其中一个解决方案。
使用适当的字段创建一个django form以供多项选择。使用POST
方法在表单标记中将其插入模板中。
创建一个网址并查看以处理此POST
请求。您可以编写代码以在此视图中将歌曲添加到播放列表。然后重新渲染模板。