我有一个看起来像这样的模型,
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()
。
有谁知道为什么会这样?什么是修复它的最佳方法?
谢谢!
答案 0 :(得分:6)
直接添加prt
应该首先尝试。您如何检索pl
和prt
?假设您的数据库中有一些数据,请尝试从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)
答案 1 :(得分:0)
这些是完整的型号吗?我只能假设在某个地方已经覆盖了某些东西,这可能不应该是。
你能发布完整的代码吗?