gpt4 book ai didi

django 模型选择对保存的数据没有影响

转载 作者:行者123 更新时间:2023-12-04 23:00:00 25 4
gpt4 key购买 nike

关注 django documentation我尝试在我的
模型.py :

class MyModel(Model):

ACTION_CHOICES = (
('d', 'delete'),
('c', 'create'),
('u', 'update'),
)

action = CharField(max_length=1, choices=ACTION_CHOICES)

但是当我运行它时
 action = MyModel(action='create')
action.save()

并检查数据库 Action 不是c ,但是 create .此外,即使对 max_length 的限制也不会对它产生影响。好的,我继续前进并尝试以这种方式制作它:

模型.py
class MyModel(Model):

ACTION_CHOICES = (
(1, 'delete'),
(2, 'create'),
(3, 'update'),
)

action = IntegerField(max_length=1, choices=ACTION_CHOICES)

代码.py :
action = MyModel(action='create')
action.save()

但是我得到一个错误,str 字段不能像 int 一样保存(数据库有 int 字段,但 MyModel.action 是 str)我在这里想念什么?选择不是应该在保存时转换值(value)吗?

此致,

最佳答案

您的帖子中有几个问题:

1) choices只能限制可以通过 Django 表单输入的内容。当您手动实例化对象时,您可以插入任何值。所以

action = MyModel(action='create')

实际上插入字符串 create进入操作栏。

2) 通常 max_length应该阻止您在该列中插入长度超过 1 个字符的字符串,但我猜您正在使用具有 no restriction on VARCHAR lengths 的 SQLite .

3) Django 没有从显示值到选择键的简单转换。你可以看看 django-model-utils对于选择的包装。

关于django 模型选择对保存的数据没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28880860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com