【问题标题】:What is the recommended way to create a blank row in the DB for a django Model?在数据库中为 django 模型创建空白行的推荐方法是什么?
【发布时间】:2011-06-15 14:50:47
【问题描述】:

我正在尝试创建一个 Web 应用程序,它基本上是一个漂亮的数据库前端。虽然数据库比单个表更复杂(与许多不同的表有许多不同的关系等),但我想在添加到其中一个主表时创建一个空白行。

我很好奇是否有比我尝试使用的更好的方法在 Django 中完成我的任务。

我不希望用户需要保存他们的表单才能将更改保存到数据库中。为此,我希望在用户访问带有表单的页面后立即创建一个空白记录。基本上,只要用户选择“新建”按钮,就会存在的所有内容都是带有主键的记录和一堆空白字段。

我已将我的模型设置为在除日期字段(使用 auto_now_add 设置)之外的所有字段上都有空白=True 和 null=True。当用户向表单字段添加数据时,我打算以编程方式编写表单以提交数据(即在他们离开字段之后)。如果用户中途停止编辑,或者关闭 jquery ui 选项卡,他们输入的任何数据都将被保存以备将来使用。

尽管设置了所有字段(除了日期和时间字段的 auto_now_add 之外),我在一个字段上得到了一个 IntegrityError(不能为空),该字段在模型中非常清楚地标记为非常空和空白。有没有更好的方法我应该解决这个问题?如果没有,为什么我设置了 null=True 和 blank=True 时会看到此错误?我收到错误是因为视图中的以下行,同样,模型中的字段为 null=True 和 blank=True。

theModel = theModel.objects.create()

非常感谢。

【问题讨论】:

    标签: django django-models django-forms django-views


    【解决方案1】:

    你的模型说什么并不重要,重要的是数据库说什么。由于 syncdb 不会修改架构,您要么必须自己应用更改,要么使用 South 等迁移工具,或者完全删除表并重新同步。

    【讨论】:

    • 嗯。那是一个想法。我以为在进行这些更改后我已经完成了 syncdb,但也许那个办公室电视节目让我感到困惑,我在同步后确实添加了空白/null 的东西。
    • 你知道什么。我把这归咎于德怀特……我真是太愚蠢了。谢谢。
    猜你喜欢
    • 2015-03-04
    • 2019-04-23
    • 2011-02-14
    • 1970-01-01
    • 2018-03-28
    • 2019-03-30
    • 1970-01-01
    相关资源
    最近更新 更多