【发布时间】:2017-03-26 21:07:39
【问题描述】:
我正在尝试创建一个与在 Imgur 上添加帖子的表单类似的图片网站。一篇文章应该由无限个不同类型(文本、图像、视频)的块组成,这些块可以创建完成的博客文章。
用户选择他想从哪个块开始(可能上传图片),然后通过单击按钮添加另一个块。
我无法为构成单个帖子的块找出一个合理的模型。
这是我的帖子模型:
class Post(models.Model):
author = models.ForeignKey('auth.User')
text = models.TextField() #just a placeholder until blocks work
created_date = models.DateTimeField(
default=timezone.now)
isWaiting = models.BooleanField(default=True)
isLocked = models.BooleanField(default=False)
views = models.IntegerField(default=0)
tags = TaggableManager(help_text="")
我不知道是否应该为 textblock、imageblock 和 videoblock 定义单独的模型(都使用 ForeignKey to Post 模型),或者是否有更好的解决方案。
我想到了一个通用模型,它将存储用于每种块类型的 TextField(用于用户编写的文本)和 FileField(用于图像和视频上传),但每条记录中的一个字段始终为空(用户只能在每个块中写入文本或上传文件),这似乎是“浪费空间”。
感谢任何解决此问题的想法。
【问题讨论】:
-
你说得对。您将需要有多个模型用于文本帖子、图像、文件或您需要的任何其他内容。他们都应该对 Post 和 Order 字段有 FK。就像这里的例子:mitsubishi-motors.com.au/blog/… 每篇博文都是不同类型的块的组合。
-
感谢您的保证!我看到它在 Mistsubishi 的网站上运行良好。还有一个问题 - 据我所知,我应该在 Django 中使用 Formsets 来创建和处理完成的帖子,并使用 (JS + AJAX) 添加额外的块。我在正确的轨道上吗?
标签: django django-models