python - 是否可以在没有 makemigrations 的情况下使用 django 运行服务器?
问题描述
我正在尝试将我的项目分成多个子项目。
用户模型已更改。我只删除了一些不必要的字段。没有新添加的字段或修改的字段数据。
从现有的主项目中,我完成了 makemigrations 并将它们全部迁移。
例如,主项目的 models.py 文件中的用户模型如下所示。
class User(AbstractBaseUser):
password = models.CharField('password', max_length=128, blank=True)
username = models.CharField('username', max_length=50, unique=True)
email = models.EmailField('email_address', blank=True)
phone = PhoneNumberField('phone', blank=True)
address = models.CharField('address', blank=True)
python manage.py makemigrations
并python manage.py migrate
已全部完成,因此用户模型已在我的数据库中设置。
在新的子项目中,模型将如下所示。
class User(AbstractBaseUser):
password = models.CharField('password', max_length=128, blank=True)
username = models.CharField('username', max_length=50, unique=True)
email = models.EmailField('email_address', blank=True)
该型号位于/sub-project/accounts/models.py
它是在以下步骤中生成的
django-admin startproject sub-project
python manage.py startapp accounts
因此,新的子项目与原基础项目完全分离。
但是,子项目也连接到原始基础项目正在使用的同一数据库。
如果我python manage.py runserver
这个子项目,
ValueError: Dependency on app with no migrations: {application name}
发生。
如果我运行服务器正常工作python manage.py makemigrations
。
我有什么方法可以不进行迁移并运行我的子项目服务器吗?
我不想进行迁移,因为我仍在为主项目使用相同的数据库,并避免任何错误,例如迁移子项目的迁移。
解决方案
听起来您不应该创建新的用户模型,而是使用 Profile/Employee/Customer 模型对其进行扩展。
有关如何制作一对一 Profile 模型的信息,请参阅https://docs.djangoproject.com/en/3.1/topics/auth/customizing/#extending-the-existing-user-model 。
仅当您需要更改用户向您的站点进行身份验证的方式时,才应更改 Django 中的用户模型。
所以你的主要项目变成了这样:
class Profile(Model):
user = models.ForeignKey(User) # or even better settings.AUTH_USER_MODEL
phone = PhoneNumberField('phone', blank=True)
address = models.CharField('address', blank=True)
并且您不对默认用户模型进行任何更改。
推荐阅读
- mercurial - 在 tortoisehg 中推送到远程的 mercurial 提交的秘密阶段
- tensorflow - 运行 CNN-LSTM 模型时出错:ValueError:lstm_13 层的输入 0 与该层不兼容:预期 ndim=3
- python-3.x - 通过列表和其他按日期在 Dataframe 上添加多种排序
- time-complexity - CTCI 书中递归算法的空间复杂度
- corda - 我在运行corda节点时收到列“identity_value”是字节错误类型
- spring-boot - Spring Security 使用自定义登录页面拒绝访问
- ios - Objective C 如何使用 iBeacon 找出室内两部 iPhone 之间的距离
- python - Python2 与 Python3 浮点表示
- css - 自定义 Bootstrap 网格行和列
- logstash - 如何通过来自csv的logstash过滤器变异添加字典数组?