python - 模型字段的django集合
问题描述
我正在尝试在 django 中设置不同的模型。
我的一些模型包含文本字段。文本定义为: - CharField (tex) - CharField (font-size) - CharField (font-weight) - CharField (color)
所以我的一些模型需要这些文本中的一到 n 个。
是否可以创建一个字段集合,例如包含所有 4 个字段的“Test-Collection”。这样我就不必为模型中需要的每个文本手动编写所有 4 个字段?
像这样的东西:
class Box(CMSPlugin):
text1 = models.CharField(max_length=100)
text1_font_weight = models.CharField(max_length=100)
text1_font_size = models.CharField(max_length=100)
text1_color = models.CharField(max_length=100)
text2 = models.CharField(max_length=100)
text2_font_weight = models.CharField(max_length=100)
text2_font_size = models.CharField(max_length=100)
text2_color = models.CharField(max_length=100)
text3 = models.CharField(max_length=100)
text3_font_weight = models.CharField(max_length=100)
text3_font_size = models.CharField(max_length=100)
text3_color = models.CharField(max_length=100)
进入那个:
class Box(CMSPlugin):
text1 = TextColelction...
text2 = TextColelction...
text3 = TextColelction...
解决方案
我不确定你想要达到什么目的。看起来您可以将此模型简化为
from django.db import models
class TextCollection(models.Model):
text = models.CharField(max_length=100)
text_font_weight = models.CharField(max_length=100)
text_font_size = models.CharField(max_length=100)
text_color = models.CharField(max_length=100)
box = models.ForeignKey("Box", on_delete=models.CASCADE, related_name="textcollections")
class Box(CMSPlugin):
pass
这样,您可以在 Box 中使用尽可能多的 TextCollections。如果您还想要多个框中的文本,则可以使用 ManyToManyField 而不是 ForeignKey。 https://docs.djangoproject.com/en/2.1/topics/db/examples/many_to_many/
推荐阅读
- linux - Linux Bash Scripting 执行 SSH 远程命令
- svg - feImage xlink:href svg 源与 png 相比模糊
- javascript - 动态创建时多次调用的事件处理程序
- three.js - THREE.JS 阴影不投射 - 聚光灯
- html - Css 背景颜色不透明度
- jquery - 速度模板 - “#foreach”循环中没有“#break”
- php - 模型的 save() 方法上的 Inflector.php 第 265 行中的 FatalErrorException
- google-colaboratory - Google Colab 在尝试解压缩大文件后冻结
- sql - 查询优化 PostgreSQL (GreenPlum)。根据排名前 5 位的结果进行分组
- c - 一次将一系列字符存储在 char 数组中