簡體   English   中英

Django ManyToMany關系add()錯誤

[英]Django ManyToMany relation add() error

我有一個看起來像這樣的模型,

class PL(models.Model):
    locid = models.AutoField(primary_key=True)
    mentionedby = models.ManyToManyField(PRT)

class PRT(models.Model):
    tid = ..

在mysql中生成的多對多表格形成為,

+------------------+------------+------+-----+---------+----------------+
| Field            | Type       | Null | Key | Default | Extra          |
+------------------+------------+------+-----+---------+----------------+
| id               | int(11)    | NO   | PRI | NULL    | auto_increment | 
| PL_id            | int(11)    | NO   | MUL | NULL    |                | 
| PRT_id           | bigint(64) | NO   | MUL | NULL    |                | 
+------------------+------------+------+-----+---------+----------------+

現在,如果pl是PL的對象而pT的對象是PRT,那么就這樣做

pl.mentionedby.add(prt)

給了我一個錯誤

不正確的整數值:第1行“prt_id”列的“PRT對象”

pl.mentionedby.add(prt.tid) 

工作正常 - 有一點需要注意。

我可以看到pl.mentionedby.all()所有元素,但是我不能去提到的PRT對象並看到它的prt.mentionedby_set.all()

有誰知道為什么會這樣? 什么是最好的解決方法?

謝謝!

直接添加prt應該首先嘗試。 你是如何檢索plprt 假設您的數據庫中有一些數據,請嘗試從Django shell獲取這些命令,看看它是否有效。 這個問題似乎缺少一些信息。 運行python manage.py shell

from yourapp.models import PL
pl = PL.objects.get(id=1)
prt = PRT.objects.get(id=1)
pl.mentionedby.add(prt)

這些是完整的型號嗎? 我只能假設某些東西已被覆蓋,可能不應該。

你可以發布完整的代碼嗎?

暫無
暫無

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

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