如何在Django用户模型中删除名字和姓氏列?

7
我按照docs所说创建了一个自定义用户模型,当我运行makemigrations时,我进入了迁移文件夹并删除了0001_initial.py中的名字和姓氏列,然后我运行了migrate命令,但是当我运行createsuperuser命令时,在终端中抛出了一个错误:django.db.utils.OperationalError: no such column: myapp_usermodel.first_name

我该如何解决这个问题? 我想删除名字和姓氏列,因为我不使用它们。

编辑:这是用户模型

from django.db import models
from django.utils.translation import gettext_lazy as _
from django.contrib.auth.models import AbstractUser

# Create your models here.
class usermodel(AbstractUser):
    email = models.EmailField(max_length=60)
    username = models.CharField(max_length=20, unique=True)
    password = models.CharField(max_length=20)
    
    def __str__(self):
        return self.username

你创建了一个自定义用户模型。你是如何创建这个模型的? - Willem Van Onsem
1个回答

11

我去了迁移文件夹并删除了0001_initial.py中的名字和姓氏列。

你不应该这样做。这将确实阻止Django创建这些列。但现在它每次查询时都会认为这些列是存在的。此外,如果您再次进行迁移,它将尝试添加额外的列。

你应该简单地使用方法解析顺序(MRO)并将字段设置为None:

class usermodel(AbstractUser):
    <b>first_name</b> = None
    <b>last_name</b> = None
    
    def __str__(self):
        return self.username

你最好也把数据库中的表格和迁移文件删除,然后再进行迁移,并迁移数据库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接