-->

Django makemigrations omits some fields from model

2019-09-14 13:35发布

问题:

In my django app I've created a model like that:

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)

But initial makemigrations has produced that:

    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'),
    ),

Why some fields are missing?

回答1:

You should always declare fields calling fields class constructor:

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