makemigrations 忽略所有领域 (DJANGO)

Posted

技术标签:

【中文标题】makemigrations 忽略所有领域 (DJANGO)【英文标题】:makemigrations ignoring all the fields (DJANGO) 【发布时间】:2021-12-20 20:00:06 【问题描述】:

正如标题所说,有一个我无法解决的问题,那就是当我迁移我的 admin_db 应用程序时,它只是忽略了所有字段,即使没有逗号等,而且语法非常干净,我'正在粘贴我的代码.. 任何帮助将不胜感激。 PS我使用mysql作为我的数据库 这是我要迁移的管理模型

from django.db import models
from datetime import datetime


# Create your models here.
class Admin(models.Model):
    Admin_Email: models.EmailField(primary_key=True, editable=False)
    First_name: models.CharField(max_length=25)
    Last_name: models.CharField(max_length=25)
    Gender: models.CharField(max_length=1)
    Date_of_registration: models.DateField(default=datetime.now, editable=False)
    Date_of_Birth: models.DateField()
    CNIC: models.BigIntegerField(max_length=13, unique=True)
    City: models.CharField(max_length=50)
    Area: models.CharField(max_length=50)
    Address: models.CharField(max_length=100)
    Phone_num: models.BigIntegerField(max_length=11, unique=True)


class Salt(models.Model):
    Admin_email = models.OneToOneField(Admin, on_delete=models.CASCADE)
    Salt = models.CharField(max_length=25, unique=True)


class Password(models.Model):
    Admin_email = models.OneToOneField(Admin, on_delete=models.CASCADE)
    hash = models.CharField(max_length=255, unique=True)

对应的迁移0001_initial.py

# Generated by Django 3.2.8 on 2021-11-07 18:58

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Admin',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ],
        ),
        migrations.CreateModel(
            name='Salt',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('Salt', models.CharField(max_length=25, unique=True)),
                ('Admin_email', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='admin_db.admin')),
            ],
        ),
        migrations.CreateModel(
            name='Password',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('hash', models.CharField(max_length=255, unique=True)),
                ('Admin_email', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='admin_db.admin')),
            ],
        ),
    ]

清楚地看到,我的 models.py 中甚至没有迁移一个字段 请帮忙 谢谢

【问题讨论】:

【参考方案1】:

<field_name>: <type> 类中使用的 <field_name>: <type> 语法称为 type annotation 并且它不设置实际属性,因此要设置实际属性使用 = 而不是 : 就像在你的其他类。

class Admin(models.Model):
    admin_Email = models.EmailField(primary_key=True, editable=False)
    first_name = models.CharField(max_length=25)
    last_name = models.CharField(max_length=25)
    ...

请注意,snake_case 是在类中区分属性的首选方式。

【讨论】:

以上是关于makemigrations 忽略所有领域 (DJANGO)的主要内容,如果未能解决你的问题,请参考以下文章

我应该对我的所有应用程序运行 Django“makemigrations”吗?

自定义帖子类型不接受页面变量

如何强制 Django 忽略任何缓存并重新加载数据?

如何忽略生产中的一些迁移

颜值爆表 DJ Ruby Rose 空降京城 !!

98.ORM迁移详解,makemigrations,migrate