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

时间:2019-01-15 13:14:02

标签: mysql django

我对如何使用Django中的phpmyadmin(mysql)将其他表连接到数据库有疑问。

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

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

1 个答案:

答案 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 = ...
    ...