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,但已经向前迈进了一步。但是,我认为根本原因是迁移本身,这就是我需要开始的地方。
我找到了解决方案。通常情况下,我自己制造了这个问题。 model文件中第一行定义mid字段的地方,最后有一个逗号“,”,这就是django不想做迁移的原因,所以没有看到表定义中的变化数据库和模型文件。
问候语 加沙