Django模型字段集合

2024-06-26 04:56:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在django设置不同的模型。在

我的一些模型包含文本字段。 文本定义如下: -字符(chartex) -CharField(字体大小) -CharField(字体粗细) -查尔菲尔德(彩色)

所以我的一些模型需要一到n个文本。在

是否可以创建一个字段集合,例如包含所有4个字段的“测试集合”。这样我就不必为模型中需要的每个文本手动编写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)

其中:

^{pr2}$

Tags: django模型文本size定义modelslengthmax
2条回答

我不知道你想达到什么目的。看起来你可以把这个模型简化成这样

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

这样,您就可以在一个框中使用任意数量的TextCollections。 如果您还想在多个框中输入文本,可以使用ManyToManyField代替ForeignKey。 https://docs.djangoproject.com/en/2.1/topics/db/examples/many_to_many/

也许最好为文本定义一个单独的模型,并与框有一个ForeignKey关系。例如:

class Text(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)

class Box(..):
   text1 = models.ForeignKey(Text)
   text2 = models.ForeignKey(Text)
   text3 = models.ForeignKey(Text)

相关问题 更多 >