簡體   English   中英

使用django.contrib.auth.models導入用戶時,是否需要在models.py中創建單獨的類?

[英]Do I need to create a separate class in my models.py when using the django.contrib.auth.models import user?

import語句導入所需的零件。 但是,當您將其放入已安裝的應用程序中時,是否已經制作了“用戶”類? 還是您仍然需要在models.py中進行說明才能在db中制作表格? 或者有人可以擴展有關如何使用django用戶和會話的信息? 我現在正在查看django文檔,而它們都只是簡單介紹了如何使用它。 他們永遠不會將代碼放在語法中,用戶將成為通過瀏覽器而不是通過python shell使用代碼的用戶。

所有已安裝的應用程序都可以參與數據庫架構。 django.contrib.auth.models貢獻了django.contrib.auth.models.User模型后面的auth_user表,因此,除非有特殊原因,否則您不必擔心重新創建它。

這里發生了很多事情。 如您所知,Django附帶了許多可在您的應用程序中使用的“ contrib”軟件包。 您可以通過將它們放入INSTALLED_APPS “激活”它們。

當您運行python manage.py syncdb ,Django會分析INSTALLED_APPS中每個應用程序的models.py文件,並在數據庫中創建關聯的表。 因此,將django.contrib.auth添加到INSTALLED_APPS並運行syncdbUserGroup的表就可以使用了。

現在,如果您想在其他應用程序中使用這些模型,則可以使用from django.contrib.auth.models import User類的方法將其導入(如您所述)。 然后,您可以對User模型中的一個模型執行類似創建ForeignKeyOneToOneFieldManyToManyFieldUser 當您執行此操作時,不會創建任何表( ManyToManyField除外; ManyToManyField更多)。 始終將同一表用於User ,就像您可能在其之間創建關系的任何自己的模型一樣。

ManyToManyField的不同之處在於創建了將關系的兩側鏈接在一起的中間表(通常稱為“聯接表”)。 但是,這純粹是出於某種特定關系的目的-實際User表沒有任何不同或以任何方式更改。

關鍵是為User創建了一個表,並且無論在哪個上下文中創建User ,該表都用於存儲所有User 。您可以將User導入任何和所有應用中,創建盡可能多的關系。您喜歡,就User而言,什么都沒有真正改變。

如果表名或其他名稱不符合您的需求,則始終可以擴展User模型。

from django.contrib.auth.models import User

class Employee(User):
    ...

models.py任何擴展Model類的類都有助於數據庫架構。 這意味着,django搜索您(以及django核心)的model.py文件,並查找擴展Model任何類,例如:

some models.py

class SomeModel(Model):
    ...
    ...

class Otherthing(Model):
    ...

這也適用於django核心代碼文件。 由於所有使用應用程序標簽和型號名稱命名的數據庫表,因此django創建的數據庫功能也具有該功能...

例如,

from django.contrib.auth.models import User

如果您跟蹤文件層次結構django -> contrib -> auth並打開models.py文件,您將看到相關的模型。 這也是這里的其他Model類,例如PermissionGroup模型。

由於這些模型在auth應用程序下,因此數據庫表是auth_userauth_perissionauth_group

首次運行manage.py syncdb命令時,django將創建這些表...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM