Django ManyToMany关系add()错误

vik*_*sit 3 python django many-to-many django-models

我有一个看起来像这样的模型,

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

class PRT(models.Model):
    tid = ..
Run Code Online (Sandbox Code Playgroud)

在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    |                | 
+------------------+------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

现在,如果pl是PL的对象而pT的对象是PRT,那么就这样做

pl.mentionedby.add(prt)
Run Code Online (Sandbox Code Playgroud)

给了我一个错误

不正确的整数值:第1行"prt_id"列的"PRT对象"

pl.mentionedby.add(prt.tid) 
Run Code Online (Sandbox Code Playgroud)

工作正常 - 有一点需要注意.

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

有谁知道为什么会这样?什么是最好的解决方法?

谢谢!

Thi*_*Lam 6

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)
Run Code Online (Sandbox Code Playgroud)