【问题标题】:Django makemigrations omits some fields from modelDjango makemigrations 省略了模型中的一些字段
【发布时间】:2016-05-17 12:50:36
【问题描述】:

在我的 django 应用中,我创建了一个这样的模型:

class Plan_miesieczny_aktualny(models.Model):
    id = models.CharField(max_length=30, primary_key=True)
    pozycja_planu = models.ForeignKey('Pozycje_planu', to_field='id')
    miesiac = models.IntegerField
    liczba = models.DecimalField
    cena = models.DecimalField
    pakiet = models.ForeignKey('Pakiet', to_field='id')
    kod_grupy = models.IntegerField(null=True)

但最初的 makemigrations 已经产生了:

    migrations.CreateModel(
        name='Plan_miesieczny_aktualny',
        fields=[
            ('id', models.CharField(max_length=30, primary_key=True, serialize=False)),
            ('kod_grupy', models.IntegerField(null=True)),
            ('pakiet', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nfz_umx.Pakiet')),
        ],
    ),

    ....

    migrations.AddField(
        model_name='plan_miesieczny_aktualny',
        name='pozycja_planu',
        field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='nfz_umx.Pozycje_planu'),
    ),

为什么缺少某些字段?

【问题讨论】:

    标签: python django django-models makemigrations


    【解决方案1】:

    你应该总是声明字段调用字段类构造函数:

    miesiac = models.IntegerField()
    liczba = models.DecimalField(max_digits=5, decimal_places=2)
    cena = models.DecimalField(max_digits=5, decimal_places=2)
    

    【讨论】:

    • 我在 Django2.2 中使用了类构造函数。例如:models.CharField(max_length=32, null=False) 而我的第二个非空类只创建了一个 id 字段。
    • 我也遇到了同样的问题,你解决了吗?
    猜你喜欢
    • 2022-01-16
    • 2018-09-09
    • 1970-01-01
    • 2017-09-27
    • 2019-08-01
    • 2013-07-20
    • 1970-01-01
    • 2019-12-31
    • 2017-10-30
    相关资源
    最近更新 更多