1. 程式人生 > >Django中修改欄位時注意的一個問題

Django中修改欄位時注意的一個問題

問題:Django 1.7.8表 Users 和 Tenant 做了多對多關聯。django 會自動建立一個表 users_tenants(user_id與tenant_id的對應)class Users(models.Model):tenants = models.ManyToManyField(Tenant)在執行 user.tenants.add(tenant)時,報下面的問題:ERROR: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`iaasms`.`users_tenants`, CONSTRAINT `users_tenants_users_id_3d9ac202e9485f18_fk_users_user_id` FOREIGN KEY (`users_id`) REFERENCES `users` (`user_id`))') A:雖然在setting -> DATABASES -> default 中關閉外來鍵檢查:'OPTIONS':{ "init_command":"SET foreign_key_checks = 0;",}可以消除這個錯誤,但是關聯查詢 user.tenants.all() 的結果是空的。根本原因:在第一次 migrate後,users_tenants的欄位 tenant_id的長度來自 表 Tenant中的 tenant_id的長度。但是,我後來增加了 Tenant中的 tenant_id的長度,在 migrate後,users_tenants中的 tenant_id的長度沒有變化。所以,在執行 user.tenants.add(tenant)時,users_tenants的 tenant_id的長度不夠。在setting -> DATABASES -> default 中關閉外來鍵檢查後,雖然不報錯了,但users_tenants的tenant_id儲存的值不全(實際的資料大於欄位長度),所以關聯查詢的結果是空的。解決:刪除migration的檔案和資料庫,重新建立資料庫。

相關推薦

Django修改注意一個問題

問題:Django 1.7.8表 Users 和 Tenant 做了多對多關聯。django 會自動建立一個表 users_tenants(user_id與tenant_id的對應)class Users(models.Model):tenants = models.Many

Django 管理修改

1.需要在admin.py的類中新增list_editable = [‘可以修改的欄位’],可修改的欄位可以寫多個,但是新增的時間和最後一次修改的時間的欄位不能夠修改 2.放在ID上,會出現一個小手,點選就可以進入編輯介面

MySQL如何用一個更新另一個表中欄

1,修改1列 update student s, city c set s.city_name = c.name where s.city_code = c.code; 2,修改多個列 update a, b set a.title=b.title, a.name=b.name wh

解決SQL SERVER 2008資料庫表修改後不能儲存的問題

1.找到工具》選項》Designers》表設計器和資料庫設計器 2.然後將“阻止儲存要求重新建立表的更改” 的這一項的鉤鉤去掉就OK了  原文地址:http://www.bitscn.com/pdb/mssql/201411/405016.html

php判斷表是否等於一個值,以及ajax連線失敗的問題,以及正則驗證輸入框的問題

$sql="select * FROM `user` WHERE `name`= '{$name}'";//  '小明'  {$name}  這裡還必須帶引號     $result=mysqli_query($link,$sql);    //   上面的後面可以用and來

MySQL在資料表修改的排列位置

建立資料表的時候,欄位在表中的排列位置就已經確定了。不過,使用ALTER TABLE語句可以改變欄位在表中的排列位置。 在MySQL中,修改欄位排列位置的基本語法格式如下: ALTER TABLE 表名 MODIFY 欄位名1 資料型別 FIRST | AFTER 欄位名2

(轉載)獲取Djangomodel的verbose_name

以下正文 obj._meta.fields 為關鍵 obj為model類 可輸出類似的一個元組,包含所有欄位名稱: (<django.db.models.fields.AutoField: id>, <django.db.mode

mysql 在表新加修改

新增欄位 在某個欄位之後新加一個欄位: ALTER TABEL xxx ADD column_name VARCHAR(64) NOT NULL DEFAULT '' COMMENT '' AFTER xxx; 修改欄位 ALTER TABEL xxx MODIFY co

將oracle和表名全部修改為小寫

在建立表和表結構的時候,如果想要小寫需要在名稱上面新增雙引號,如果不新增oracle資料庫會預設識別為大寫 1.將表名和欄位名改為大寫 批量將表名變為大寫 begin    for c in (select table_name tn from user_tabl

Django自定義使用者表+自定義admin後臺

1.自定義使用者表 注意事項 必須在settings中配置AUTH_USER_MODEL這個欄位 # 覆蓋預設的使用者模型,使用自定義使用者模型 # 語 法:'app的名稱.自定義使用者模型的名稱' AUTH_USER_MODEL = 'admi.UserModel

如何oracle 某一使用者授予查詢另一個使用者某張表的許可權,以及更新另一使用者表某些

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

獲取Django model名和的verbose_name

定義模型:  class Game(models.Model): name = models.CharField(u'遊戲名稱',max_length=30) gameid = models.CharField(u'遊戲id',max_length=20)

【java學習筆記】MyBatis當實體類的屬性名和表名不一樣的解決方法

在使用MyBatis開發DAO層時,當實體類中的屬性名和表中的欄位名不一樣時,查詢出來的值為null,此時有3種解決方法 解決方法1                在Mapper.xml對映檔案中,寫SQL語句時起別名 解決

解決一個的資料由同表加權和得到(用觸發器解決)

本次實驗一張表中的90%的資料由相關連的外表(b表)資料得到,即用觸發器得到。 https://blog.csdn.net/IT_95/article/details/84064958 那麼如何實現這張表裡面的資料得到一個總的值放在一個欄位呢? 第一時間的想法是在這張表(b表)裡面加觸發

批量修改sql某個的特定資訊

1.update 表名 set 欄位名=REPLACE(欄位名,'原內容','新內容') 此種寫法,會更新表中的所有資料的指定欄位,即使不含原內容,也會更新 例:將admin表中user中的所有123變為aaa update admin set user=REPLACE

DateTimeField如何自動設定為當前時間並且能被修改 ——django日期時間的使用

  參考於:https://www.cnblogs.com/huchong/p/7895263.html   建立django的model時,有DateTimeField、DateField和TimeField三種類型可以用來建立日期欄位,其值分別對應著datetime()、date

mysql modify和change區別(以及使用modify修改名稱報錯)

使用modify修改欄位報錯如下: mysql> alter table student modify name sname char(16);ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that

hibernate查詢資料庫char型別只返回一個字元

hibernate查詢資料表char型別欄位只返回一個字元 在oracle或sqlServer下會遇到,查詢資料表字段型別為char,如果使用Hibernate原生SQL去執行查詢,往往只會返回 一

maven 構建專案,modules子模組,module對應name

當maven構建專案時,modules的module所使用的是子專案中pom中的name欄位名,而不是artifactId,也不是groupId例如:父專案Pom:<modules><

MySQL之表重複只取第一個

有時在我們的SQL表中包含很多同名的資料,這樣可以將多維度的資料儲存的一個表中,但是對於查詢會帶來一些麻煩。 如上圖,如果我們只想取每個學校的第一條資料:我們可以使用DISTINCT去重 SQL: select DISTINCT history.school Fro