Django ManyToMany 关系 add() 错误
我有一个模型,看起来是这样的,
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的一个对象,prt是PRT的一个对象,那么执行
pl.mentionedby.add(prt)
会给我一个错误
错误的整数值:'PRT对象' 在第1行的'prt_id'列"
而
pl.mentionedby.add(prt.tid)
可以正常工作,但有一个例外。
我可以看到所有在 pl.mentionedby.all()
中的元素,但我无法访问一个提到的PRT对象,去查看它的 prt.mentionedby_set.all()
。
有没有人知道为什么会这样?有什么好的解决办法吗?
谢谢!
2 个回答
0
这些模型是完整的吗?我只能猜测某个地方可能被覆盖了,而这本来是不应该的。
你能把完整的代码发上来吗?
6
直接添加 prt
应该第一次就能成功。你是怎么获取 pl
和 prt
的呢?假设你的数据库里有一些数据,可以在 Django 的命令行工具里试试这些命令,看看能不能成功。问题里似乎缺少了一些信息。在运行 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)