重命名 models.py 中作为主键的字段
Rename a field which was Primary Key in models.py
我有一个包含以下字段的模型:
email = models.EmailField(verbose_name="email", max_length=60, unique=True)
department = models.TextField(verbose_name="department")
username = models.CharField(max_length=30, unique=True)
emp_id = models.AutoField(primary_key=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
hide_email = models.BooleanField(default=True)
name = models.TextField(verbose_name="employee name")
我想将“emp_id”字段重命名为“id”,如您所见,它是主键字段。你能为它创建一个迁移文件吗?
谢谢
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('your_app_name', 'name_of_previousmigration_file'),
]
operations = [
migrations.RemoveField(
model_name='modelname',
name='emp_id',
)
]
您将字段修改为:
class MyModel(models.Model):
# …,
id = models.AutoField(primary_key=True<b>, db_column='emp_id'</b>)
# …
如果你然后 运行 manage.py makemigrations
,Django 会询问你是否重命名字段:
Did you rename mymodel.emp_id to mymodel.id (a AutoField)? [y/N]
你用 yes 回答的问题。
这仍将使用 emp_id
作为数据库 ID。如果你也想重命名数据库列,你可以只删除 emp_id
字段,Django 将使用默认的 id
字段作为主键,你可以让 Django 以同样的方式进行迁移.
class ModelName(models.Model):
id = models.AutoField(primary_key=True)
# other fields
然后运行 python manage.py makemigrations
将出现一条消息,告诉您确认要将字段 emp_id 重命名为 id。输入 y 确认是。
然后运行pythonmanage.py迁移
在您的应用程序目录中,您会找到迁移文件。
我有一个包含以下字段的模型:
email = models.EmailField(verbose_name="email", max_length=60, unique=True)
department = models.TextField(verbose_name="department")
username = models.CharField(max_length=30, unique=True)
emp_id = models.AutoField(primary_key=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
hide_email = models.BooleanField(default=True)
name = models.TextField(verbose_name="employee name")
我想将“emp_id”字段重命名为“id”,如您所见,它是主键字段。你能为它创建一个迁移文件吗?
谢谢
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('your_app_name', 'name_of_previousmigration_file'),
]
operations = [
migrations.RemoveField(
model_name='modelname',
name='emp_id',
)
]
您将字段修改为:
class MyModel(models.Model):
# …,
id = models.AutoField(primary_key=True<b>, db_column='emp_id'</b>)
# …
如果你然后 运行 manage.py makemigrations
,Django 会询问你是否重命名字段:
Did you rename mymodel.emp_id to mymodel.id (a AutoField)? [y/N]
你用 yes 回答的问题。
这仍将使用 emp_id
作为数据库 ID。如果你也想重命名数据库列,你可以只删除 emp_id
字段,Django 将使用默认的 id
字段作为主键,你可以让 Django 以同样的方式进行迁移.
class ModelName(models.Model):
id = models.AutoField(primary_key=True)
# other fields
然后运行 python manage.py makemigrations
将出现一条消息,告诉您确认要将字段 emp_id 重命名为 id。输入 y 确认是。
然后运行pythonmanage.py迁移
在您的应用程序目录中,您会找到迁移文件。