Django,我如何将模型列拆分为三个文本字段?

时间:2017-07-01 00:13:31

标签: python django textfield

我在将模型中的列拆分为三个单独的文本字段时遇到问题。

现在,我有这个:

class Software(models.Model):

    version = models.CharField(max_length = 10)

然后,在管理面板中,对于程序的版本,您将获得一个文本字段。

所以,如果您有这样的版本:1.2.3

我希望文本框为1,另一个为2,最后一个为3。

所以,它可能看起来像这样:

| 1 |。| 2 |。| 3 |

然后,当我得到所有三个文本字段的值时,

我会将它们组合起来制作这个字符串:'1.2.3'

有人知道怎么做吗?感谢。

1 个答案:

答案 0 :(得分:0)

您需要制作3个不同的字段。实际上可能是4。

version = models.CharField(max_length=10, blank=True, null=True)
major= models.IntegerField()
minor = models.IntegerField()
patch = models.IntegerField()

然后使用pre / post_save信号填充您的版本字段:

def pre_save_software_reciever(sender, instance, *args, **kwargs):
    instance.version = "{}.{}.{}".format(instance.major,
                                         instance.minor,
                                         instance.patch)

pre_save.connect(pre_save_software_reciever, sender=Software)

然后,您需要格式化表单,使其与您所描述的一样。

或者,你可以创建三个表单字段并创建一个填充版本的验证函数,但IMO总是最好不要多用一个字段。如果您认为自己需要或报告任何主要/次要/补丁部分,那么它们将更直接地与它们分开保存。