Primary Key varchar - 没有检测到模型变化

问题描述 投票:0回答:1

PostgreSql 数据库,Django 4.

我在检测迁移文件的数据模型更改时遇到问题。我正在尝试在模型中添加格式为 dddddd-ddd 的 varchar 类型的主键。字段定义本身如下所示:

mid = models.CharField(max_length=10, primary_key=True, verbose_name='custom ID'),
不幸的是,创建迁移文件后,您看不到mid字段,但是有一个id。 为了测试 makemigrations 本身的正确性,我添加了 phone1 字段,它已经被检测到并且在迁移中有覆盖。

这是我的模型

class Report(ModelBaseClass):
    mid = models.CharField(max_length=10, primary_key=True, verbose_name='custom ID'),
    created_user = models.ForeignKey(User, on_delete=models.PROTECT, editable=False, verbose_name='Przyjmując')
    client = models.ForeignKey(Client, on_delete=models.PROTECT, verbose_name='Klient')
    email = models.EmailField(null=True, blank=True, verbose_name='E-mail')
    phone = models.CharField(max_length=20, null=True, blank=True, verbose_name='Telefon')
    phone1 = models.CharField(max_length=20, null=True, blank=True, verbose_name='Telefon')
    comment = models.TextField(max_length=1000, blank=True, verbose_name='Uwagi do zgłoszenia')
    registration_date = models.DateField(auto_now_add=True, verbose_name='Data przyjęcia')
    ending_date = models.DateTimeField('Data zakończenia', null=True, blank=True)

以及迁移文件的摘录。

  migrations.CreateModel(
            name='Report',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_date', models.DateTimeField(auto_now_add=True)),
                ('modified_date', models.DateTimeField(auto_now=True)),
                ('email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='E-mail')),
                ('phone', models.CharField(blank=True, max_length=20, null=True, verbose_name='Telefon')),
                ('phone1', models.CharField(blank=True, max_length=20, null=True, verbose_name='Telefon')),
                ('comment', models.TextField(blank=True, max_length=1000, verbose_name='Uwagi do zgłoszenia')),
                ('registration_date', models.DateField(auto_now_add=True, verbose_name='Data przyjęcia')),
                ('ending_date', models.DateTimeField(blank=True, null=True, verbose_name='Data zakończenia')),
                ('client', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='organize.client', verbose_
                ('created_user', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.PROTECT, to=setti
            ],

如何解决

附言。启动了一个关于相同问题的thread,但已经向前迈进了一步。但是,我认为根本原因是迁移本身,这就是我需要开始的地方。

django postgresql django-models
1个回答
0
投票

我找到了解决方案。通常情况下,我自己制造了这个问题。 model文件中第一行定义mid字段的地方,最后有一个逗号“,”,这就是django不想做迁移的原因,所以没有看到表定义中的变化数据库和模型文件。

问候语 加沙

© www.soinside.com 2019 - 2024. All rights reserved.