【发布时间】:2016-09-03 13:39:10
【问题描述】:
我有一个带有 javascript 的 html 表,它允许对通过 POST 表单传递 track_id 列表和行顺序列表的行进行排序。
我刚刚为模型添加了使用 through 的类 PlaylistTrack,因此我可以将排序添加到 tracking.m2m 字段。在我添加直通模型之前,我在下面的视图有效,但现在我不确定如何保存轨道及其相关订单号的 list,因为我不能使用 add() 和我必须使用 create()。我应该如何在我的视图中使用 create() 来保存 track_id 的列表并将订单号与列表相关联?我可以使用 bulk_create 吗?
models.py:
class Playlist(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
name = models.CharField(max_length=50)
tracks = models.ManyToManyField(Track, through='PlaylistTrack')
def __str__(self):
return self.name
class PlaylistTrack(models.Model):
track = models.ForeignKey(Track)
playlist = models.ForeignKey(Playlist)
order = models.PositiveIntegerField()
class Meta:
ordering = ['order']
views.py:
def add_track(request):
active_playlist = Playlist.objects.get(id=request.POST.get('playlist_id'))
add_tracks = request.POST.getlist('track_id')
if request.POST.get('playlist_id'):
active_playlist.tracks.add(*add_tracks) # how to use create or bulk_create?
return redirect("playlists:list_playlists")
【问题讨论】:
标签: django model manytomanyfield