【问题标题】:Django: Default value in Database, not just ORMDjango:数据库中的默认值,而不仅仅是 ORM
【发布时间】:2015-11-06 07:39:54
【问题描述】:

我想为 数据库 中的列设置一个默认值,而不仅仅是 django orm。

相关工单处于“wontfix”状态:https://code.djangoproject.com/ticket/470

在关系数据库中创建默认值的首选方法是什么?

在我的例子中,它是一个 BooleanField,应该默认为 FALSE。

我使用 PostgreSQL,但 AFAIK 在这种情况下这应该无关紧要。

【问题讨论】:

    标签: django database orm default-value


    【解决方案1】:

    我是这样解决的。该文件是使用manage.py makemigrations 创建的。我只添加了底部的那一行。

    class Migration(migrations.Migration):
    
        dependencies = [
        ]
    
        operations = [
            migrations.CreateModel(
                name='State',
                fields=[
                    ('id', models.CharField(max_length=256, serialize=False, primary_key=True)),
                    ('state', models.BooleanField(default=True)),
                ],
                bases=(models.Model,),
            ),
    
            ### The following line was added 
            migrations.RunSQL('alter table box_state alter column state set default false')
        ]
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      class MYModel(models.Model):
          is_teacher = models.BooleanField(default=False)
      

      【讨论】:

      • 你确定吗? AFAIK 默认仅在 ORM 中处理。数据库模式没有它。我提供了相关票证的链接。
      • 虽然此代码可以回答问题,但提供有关 如何 和/或 为什么 解决问题的附加上下文将改善答案的长期价值。
      • 这是不正确的,Django 没有在数据库中设置默认值,正如原始问题所说。
      • 那么你应该使用灯具
      • @aryan 固定装置不能解决我的问题。我有其他不使用制作 SQL-INSERT 的 django ORM 的应用程序。这些 INSERT 应该有默认值。这些默认值需要来自数据库。
      猜你喜欢
      • 2018-12-10
      • 2017-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 2017-09-13
      • 2022-01-04
      相关资源
      最近更新 更多