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().
有谁知道为什么会这样?什么是最好的解决方法?
谢谢!
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9882 次 |
| 最近记录: |