简体   繁体   English

Django Postgres ArrayField makemigrations

[英]Django Postgres ArrayField makemigrations

I'm looking to use the PostgreSQL-specific ArrayField in my Django project, but it doesn't show up in the migrations after I run makemigrations. 我希望在我的Django项目中使用PostgreSQL特定的ArrayField,但是在运行makemigrations之后,它不会出现在迁移中。 Any ideas why? 有什么想法吗?

Django v2.1 Postgresql v9.6.6 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()

Then I run: python3 manage.py makemigrations 然后我运行: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()),
        ],
    ),

As you can see, the field 'udi' is suspiciously missing. 如您所见,可疑字段'udi'丢失了。

The problems are a comma at the end of the ArrayField() and CharField would need max_length too. 问题是ArrayField()末尾的逗号, CharField也需要max_length

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

Run makemigrations again and you will get a migration you want. 再次运行makemigrations ,您将获得所需的迁移。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM