我对如何使用Django
中的phpmyadmin(mysql)将其他表连接到数据库有疑问。
我已使用auth_user表注册用户帐户。现在,我想创建另一个表,用于存储有关用户的住所,电话号码,性别等数据。这些信息我应该保存在其他表中。
如何创建该表并将其连接到mysql数据库?
答案 0 :(得分:0)
我根据评论更新了答案
我只是想将模型连接到我在phpmyadmin中创建的数据库中的新表。
The docs阐明:
模型是有关数据的唯一确定的信息源。它包含您要存储的数据的基本字段和行为。通常,每个模型都映射到一个数据库表。
这意味着在Django项目中,每个应用程序都应包括描述基础数据库结构的python代码。
但是,在某些情况下数据库是预先存在的。 There is a procedure,为了自动创建用于描述现有数据库的python代码,并将其与Django集成,应遵循此规则。
相关命令为python manage.py inspectdb
:
此功能是作为快捷方式,而不是确定的模型 代。有关更多信息,请参见inspectdb的文档。
清理完模型后,将文件命名为models.py并将其放入 在保存您的应用的Python包中。然后将该应用添加到您的 INSTALLED_APPS设置。
默认情况下,inspectdb创建非托管模型。也就是说,托管= 模型的Meta类中的False告诉Django不要管理每个 表的创建,修改和删除。
但是,创建包含用户额外数据的表的最佳方法是:
根据the docs:
在处理不直接相关的信息之前请仔细考虑 您的自定义用户模型中进行身份验证。
在模型中存储特定于应用程序的用户信息可能会更好 与用户模型有关。这样,每个应用程序都可以 指定自己的用户数据要求,而不会与之冲突 其他应用。另一方面,查询以检索与此相关的 信息将涉及数据库联接,这可能会影响 性能。
您可以使用称为OneToOneField
的关系并按如下方式创建模型:
from django.conf import settings
from django.db import models
class MySpecialUser(models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
)
residence = ...
phone_number = ...
...