django通过模型将外键对象列表保存到m2m字段w /

贝曼

我有一个带JavaScript的html表,该表允许对行进行排序,该行通过POST上的表单传递track_id列表和行顺序列表。

我只是在模型中添加了通过使用的PlaylistTrack类,因此可以在tracks.m2m字段中添加排序。在添加直通模型之前,下面的视图起作用了,但是现在我不确定如何保存带有相关订单号的轨道列表,因为我不能使用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")
schwobaseggl

Ozgur的答案基本涵盖了您。但是,您不需要从数据库中获取数据PlaylistTrack实例,则可以使用bulk_create

def add_track(request):
    playlist_id = request.POST.get('playlist_id')
    track_ids = enumerate(request.POST.getlist('track_id'), start=1)
    PlaylistTrack.objects.bulk_create([
        PlaylistTrack(playlist_id=playlist_id, track_id=track_id, order=i) 
            for i, track_id in track_ids
    ])
    return redirect("playlists:list_playlists")

这样可以将整个过程简化为单个db操作,在此(1 + 2n)之前您已进行过操作(n即磁道数)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django 1.6 AbstractUser M2M模型验证错误

来自分类Dev

Python Django:对具有m2m字段和mySql的单个模型使用dumpdata

来自分类Dev

Django:删除对象中的M2M关系

来自分类Dev

Django的“ ModelForm”对象通过M2M没有属性“ cleaned_data”

来自分类Dev

Django Q对象和M2M查询

来自分类Dev

保存时更新其他模型中所有m2m条目的外键字段

来自分类Dev

Django过滤确切的M2M对象

来自分类Dev

Django:在信号中获取与M2M相关的对象

来自分类Dev

模型表单中的Django M2M字段?

来自分类Dev

Django REST Framework:如何向使用穿透表的M2M序列化器添加外键?

来自分类Dev

Django从m2m到模型按字段注释查询集

来自分类Dev

在djnago中设置M2M对象的字段值

来自分类Dev

通过模型对象遍历Django M2M

来自分类Dev

使用2个M2M字段的相关名称过滤Django模型

来自分类Dev

Django 1.6 AbstractUser M2M模型验证错误

来自分类Dev

在Django中以M2M关系修改对象

来自分类Dev

Django:删除对象中的M2M关系

来自分类Dev

Django Q对象和M2M查询

来自分类Dev

Django,将字典保存到可能缺少键的模型中

来自分类Dev

从模型中获取不在Django中的M2M关系中的对象

来自分类Dev

django通过模型将外键对象列表保存到m2m字段w /

来自分类Dev

如何通过对象为M2M创建Django表单对象

来自分类Dev

Django模型表单在实例后保存m2m

来自分类Dev

如何使用 commit=False 在 Django 上保存 m2m 字段?

来自分类Dev

更新具有 m2m 字段的模型实例

来自分类Dev

通过其他字段的值在django模型中保存外键

来自分类Dev

Django模型形式:m2m的背面不保存

来自分类Dev

Django ManyToManyField 不保存 m2m 关系

来自分类Dev

如何将外键为 User 的模型表单保存到 Django 模型中

Related 相关文章

热门标签

归档