當前位置:首頁 » 操作系統 » django資料庫欄位

django資料庫欄位

發布時間: 2022-10-06 06:56:07

『壹』 關於django資料庫設計,雙表互為外鍵

資料庫設計是整個設計最基礎的部分

1、django app的設計:根據系統的需求分析來設計django的app,django的開發是基於app來開發的,所以第一步就是設計app。

2、各appmodel的設計:也就是設計對應的數據表

3、數據表的生成以及修改

使用在線教育系統作為實例:

userprofile的設計:在任何一個系統中,user表都是第一個被設計的,django會產生幾個默認用戶數據表

在設計我們自己的user表的時候,我們希望能生成自己的表又希望能夠繼承django的默認表,此時,我們可以繼承AbstractUser(

from django.contrib.auth.models import AbstractUser

class UserProfile(AbstractUser):
pass
定義完UserProfile表之後,我們需要在setting.py文件中注冊users app,INSTALLED_APPS = [

'users',
]
並且定義一個方法AUTH_USER_MODEL = "users.UserProfile",注意這里是使用users.UserProfile而不是users.model.UserProfile
(1)user model的設計:
我們在設計django app的時候,每個app中都有model,model文件中很有可能用到其他app文件當中的model,這就會很容易引入循環引用的問題,為了解決這個問題,很常用的一種方法就是使用分層model的方法,也就是上一層可以引用下一層
的model,如下:

註:PEP8的在引入的規范是第一個區域是導入python自帶的包,然後隔一行的第二個區域是第三方的包,如django,然後隔一行的第三個區域是我們自己定義的一些model

(2)coursemodel的編寫:一個數據可能和另一個數據是一對多的關系,但是一張表存儲不了這種關系,所以就需要把這兩個數據分別存儲在不同的數據表當中,這樣就會引入外鍵的關系。

model的FileFIield,定義了這個欄位就可以在後台系統中生成上傳文件的按鈕

(3)oganizationmodel的編寫:

(4)operation的model編寫:

所有的APP編寫完成之後,我們可以建立Python的apps包,把所有的app都放到這個apps中,把所有的APP放到apps之後,會發現各個app的model的引用可能會出現紅線,說明我們找不到這些引用的包,所以需要我們在setting.py文件當中
把apps加入Python的搜索目錄之下,
import syssys.path.insert(0, os.path.join(BASE_DIR, 'apps'))

『貳』 django更新模型的部分欄位怎麼做

  1. 在class里更新欄位

  2. 運行python manage.py makemigrations記錄遷移

  3. 運行Pythonmanage.py migrate 將更新實施到資料庫表中

這個過程中可能會出現很多問題,比如已有的數據記錄怎麼更新,關聯的對象怎麼處理。詳細可參考劉江的博客和教程:liujiangblog-com

『叄』 django(python)的模型欄位類的實例化問題,新手請教。

這些東西,都有辦法。我都用過。不過,最近不用了。我只能給你一個指引。

在django提供的管理類里admin有所有這些用法。你可以找到它的源代碼,自己讀一下。

DataField的確需要一個這樣的對象來給它才可以向資料庫寫。

ForiegnKey也的確需要一個已建立好的class。 比如ForiegnKey(anotherModel), anotherModel一定是一個已定義好的class

另外在djangoproject的官網中有豐富的幫助。大部分答案都可以搜索到。

『肆』 django中怎麼動態操作資料庫欄位

django的ORM系統不支持修改刪除欄位的操作,也就是說你在寫模型model文件的時候,比如說定義了這個user表,然後包含欄位telphone定義,你一旦執行了manage.py syncdb 這個操作,就把表結構往資料庫寫死了,如果你之是刪除了model文件的telphone,資料庫是不被重新修改的。這個時候必須用原生sql解決,也就是說自己寫SQL語句讓django執行,這樣的話會出很多問題,也就是說你執行了alter table users drop column telphone之後,你的model文件不知道你已經對users表結構做了修改,這樣會出直接導致django應用的崩潰。所以動態欄位不好做。也可能是我才疏學淺,沒太理解,也許有高人能做到。不過面對ORM這樣的盡量別刪除欄位。

『伍』 Django的orm中怎麼讓外鍵欄位不加_id

外鍵在資料庫中的默認欄位名是它在模型中的屬性名+_id。可以在創建外鍵時使用db_column參數顯式地指定一個欄位名,來覆蓋這么默認欄位名。

author = models.ForeignKey('Author', on_delete=models.CASCADE, db_column='foobar')
那麼資料庫中這個外鍵欄位名就是foobar,而不是author_id。

『陸』 django在讀取資料庫後返回的是一個對象,如何將對象中的欄位(屬性)讀出

你用all() 返回的是一個對象列表。這樣的 [obj1, obj2, ...]
使用 obj.objects.get(id=**) 這樣得到的是一個對象, 或者使用 get_object_or_404(obj, id=**)
這樣的話, 使用 obj.objects.get(id=**).屬性名 既可以了

或者
for obj in obj.objects.all():
obj.屬性名

明白了吧

『柒』 Django 資料庫添加欄位

你說對了,假設你用資料庫管理工具的話,你要先選擇你工程所對應的資料庫,比如mysql,直接用控制台操作的話,你需要先執行use yourdb,而用manage.py dbshell會自動鏈接到你用的資料庫,省了輸入用戶名密碼和use yourdb的過程。

熱點內容
sql存儲過程out 發布:2024-04-26 19:33:15 瀏覽:414
struts2訪問方法 發布:2024-04-26 19:11:36 瀏覽:259
外文翻譯android 發布:2024-04-26 19:03:30 瀏覽:90
土金木配置怎麼樣 發布:2024-04-26 18:52:50 瀏覽:611
這台電腦如何訪問另一台電腦伺服器 發布:2024-04-26 18:51:08 瀏覽:628
怎麼快速了解電腦的配置 發布:2024-04-26 18:42:11 瀏覽:998
rsa加密演算法例子 發布:2024-04-26 18:40:29 瀏覽:244
thinkphp緩存關閉 發布:2024-04-26 18:19:32 瀏覽:97
linux信號捕捉 發布:2024-04-26 18:19:27 瀏覽:935
編譯有哪兩種模式 發布:2024-04-26 17:53:30 瀏覽:871