我在将模型中的列拆分为三个单独的文本字段时遇到问题。
现在,我有这个:
class Software(models.Model):
version = models.CharField(max_length = 10)
然后,在管理面板中,对于程序的版本,您将获得一个文本字段。
所以,如果您有这样的版本:1.2.3
我希望文本框为1,另一个为2,最后一个为3。
所以,它可能看起来像这样:
| 1 |。| 2 |。| 3 |
然后,当我得到所有三个文本字段的值时,
我会将它们组合起来制作这个字符串:'1.2.3'
有人知道怎么做吗?感谢。
答案 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总是最好不要多用一个字段。如果您认为自己需要或报告任何主要/次要/补丁部分,那么它们将更直接地与它们分开保存。