【发布时间】:2016-02-06 15:01:22
【问题描述】:
假设您正在创建一个博客,并且每篇博文都包含一组交错的文本片段和 svg 片段(例如)。
您将每个片段存储在自定义 django 字段中(例如 HTMLField 和 SVGField)。
最好的组织方式是什么?
如何维护分片的顺序?这个解决方案看起来很丑:
class Post(models.Model):
title = CharField(1000)
class Fragment(models.Model):
index = IntegerField()
html = HTMLField()
svg = SVGField()
post = ForeignKey(Post)
【问题讨论】:
-
创建一个单独的模型来存储这些。您不能依赖字段,因为听起来您不知道有多少字段。
-
@ShangWang 我正在尝试使用一对多的关系,但是如何保持片段的顺序?只使用整数字段?
-
你有多少种不同的类型?如果你没有很多,你的方式很好,使用整数字段来存储订单。
-
我有两种类型。但是在附加帖子时,如果我的帖子包含 20 个片段,我必须遍历它们以找到索引最大的那个。我必须手动实现 CRUD 操作,与非关系数据库相比,这非常无效。
-
不,您只需执行
Fragment.objects.filter(post=current_post).latest('index')即可找到最大的索引。如果你想从头到尾,请Fragment.objects.filter(post=current_post).order_by('index')。只需利用 ORM 操作就很容易了。
标签: django postgresql