在Django中创建并连接其他表到MySQL数据库

问题描述 投票:-1回答:1

关于如何使用Django中的phpmyadmin(mysql)将其他表连接到数据库,我遇到了问题。

我使用auth_user表来注册用户的帐户。现在我想创建另一个表来存储用户关于他的住所,电话号码,性别等的数据。这些信息我应该保存在其他表中。

如何创建该表并将其连接到mysql数据库?

mysql django
1个回答
0
投票

我根据评论更新答案:

我只是想将我的模型连接到我在phpmyadmin中创建的数据库中的新表。

The docs澄清:

模型是有关数据的单一,明确的信息来源。它包含您要存储的数据的基本字段和行为。通常,每个模型都映射到单个数据库表。

这意味着在Django项目中,每个应用程序都应该包含描述底层数据库结构的python代码。

但是,有些情况下数据库预先存在。应该遵循There is a procedure,以便自动创建描述现有数据库的python代码,以便将其与Django集成。

相关命令是python manage.py inspectdb

此功能用作快捷方式,而不是确定的模型生成。有关更多信息,请参阅inspectdb的文档。

清理模型后,将文件命名为models.py并将其放在包含应用程序的Python包中。然后将应用程序添加到INSTALLED_APPS设置中。

默认情况下,inspectdb创建非托管模型。也就是说,在模型的Meta类中,managed = 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 = ...
    ...
© www.soinside.com 2019 - 2024. All rights reserved.