可以说,用户拥有视频剪辑和图片,两者都带有相应的型号VideoClipModel
和ImageModel
。
现在我正在添加一项新功能,用户可以将剪辑和图像组合在一起以创建“最终”视频。现在我需要的是创建一个模型,我可以存储视频剪辑和图像的序列。任何人都知道如何做到这一点?
例如:用户想要使用以下项目序列创建最终视频:
Image1 -> VideoClip1 -> Image2 -> VideoClip2 -> VideoClip3 -> Image3 -> Image1
我想要做的是创建一个模型,我可以存储所选的序列
我想创建一个带有两个m2m字段的VideoFinalModel到ImageModel和VideoClipModel以及一个charfield,它将以类似于此的方式存储订单:
image_1, video_1, image_2, video_2, video_3, image_3, image_1
所以模型看起来像:
def VideoFinal(...):
videos = models.ManyToManyFIeld("VideoClips")
images = models.ManyToManyFIeld("Images")
order = models.CharField()
def Images(...):
""" A bunch of fields here """
def VideoClips(...):
""" A bunch of different fields here """
现在,这会做我想要的......但是我不相信这是应该怎么做的。
我怎样才能以pythonic的方式做到这一点?
谢谢!
答案 0 :(得分:1)
您可以使用包含位置字段的模型VideoComponent
以及VideoClipModel
和ImageModel
的外键。然后,Video
模型会有多个到VideoComponent
的字段。
class Video(models.Model):
components = models.ManyToManyField('VideoComponent')
class VideoComponent(models.Model):
image = models.ForeignKey('ImageModel')
video_clip = models.ForeignKey('VideoClipModel ')
position = models.IntegerField()
class Meta:
ordering = ['position']
获取订购的组件:
video.components.all()
另请查看django-mptt以存储分层数据: