【问题标题】:Django Postgres ArrayField makemigrationsDjango Postgres ArrayField 迁移
【发布时间】:2018-12-06 18:06:12
【问题描述】:

我希望在我的 Django 项目中使用特定于 PostgreSQL 的 ArrayField,但是在我运行 makemigrations 后它没有出现在迁移中。任何想法为什么?

Django v2.1 PostgreSQL v9.6.6

# Models.py
from django.db import models
from django.contrib.postgres.fields import ArrayField

class MyClassName(models.Model):
    udi = ArrayField(models.CharField()),
    version = models.IntegerField()

然后我运行:python3 manage.py makemigrations

# 0001_initial.py
migrations.CreateModel(
    name='MyClassName',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('version', models.IntegerField()),
        ],
    ),

如您所见,“udi”字段可疑丢失。

【问题讨论】:

    标签: python django postgresql


    【解决方案1】:

    问题是ArrayField() 末尾的逗号和CharField 也需要max_length

    class MyClassName(models.Model):
        udi = ArrayField(models.CharField(max_length=10))
        version = models.IntegerField()
    

    再次运行makemigrations,您将获得所需的迁移。

    【讨论】:

    • 非常感谢!!!我不敢相信尾随的逗号只是默默地失败并放弃了这个领域!不错的收获!
    猜你喜欢
    • 2019-12-15
    • 2016-08-05
    • 2016-08-13
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2021-06-05
    • 2018-01-14
    相关资源
    最近更新 更多