我的模特有:
class Playlist(models.Model):
key = models.CharField(max_length=255, blank=True, unique=True)
user = models.ForeignKey(User)
title = models.CharField(max_length=200)
pub_date = models.DateTimeField(auto_now_add=True)
videos = models.ManyToManyField(Video, through='PlaylistVideo')
class PlaylistVideo(models.Model):
playlist = models.ForeignKey(Playlist)
video = models.ForeignKey(Video)
position = models.IntegerField()
class Video(models.Model):
title = models.CharField(max_length=255,blank=True)
description = models.TextField(blank=True)
thumb = models.URLField(blank=True)
duration = models.IntegerField(default=0)
我想为播放列表和API编写POST(创建)。不确定如何处理视频字段。
Django 1.8和django-rest-framework
由于
答案 0 :(得分:0)
默认情况下,以指定的直通模型为目标的ManyToManyField的关系字段设置为只读。
因此,在创建Video
时,您肯定无法创建Playlist
个实例。
现在,考虑到您已经拥有Video
个对象,并且想要创建一个包含其中一些视频的Playlist
,有两种方法可以解决这个问题。
您在创建Playlist
的同时创建m2m关系:
class PlaylistSerializer(ModelSerializer):
videos = PrimaryKeyRelatedField(many=True)
class Meta:
model = Playlist
Playlist
上创建POST
,没有任何视频,然后您创建另一个端点(例如playlist/<playlist_id>/videos/
),您可以在其中添加/删除所需的视频。两者都有利有弊,但我的意见是你应该先设计API,然后考虑如何继续编辑Playlist
。
您是逐个添加视频吗?你批量添加它们吗? 你如何删除视频?这可以批量完成吗?
一旦你对这些问题得到正确答案,实施应该相当简单。
祝你好运!