Ada*_*erz 11 python django django-queryset
我试图更新一堆对象的id和引用对象的相关表.
class Test(models.Model):
id=models.IntegerField(primary_key=True)
class Question(models.Model):
id=models.AutoField(primary_key=True)
test=models.ForeignKey('Test',db_column='testId')
d={1:2,5:10}
for fr,to in d.items():
Test.objects.filter(id=fr).update(id=to)
Question.objects.filter(test_id=fr).update(test_id=to)
Run Code Online (Sandbox Code Playgroud)
我曾尝试test_id,test__id而testId但得到这个错误信息:
django.db.models.fields.FieldDoesNotExist: Question has no field named 'test_id'
Run Code Online (Sandbox Code Playgroud)
这目前可能吗?
编辑:我宁愿不必Test为每个id更改加载对象.
laf*_*ste 13
在Django 1.8中实现
用法:
Bar.objects.filter(pk=foo.id).update(a_id=bar.id)
Bar.objects.filter(pk=foo.id).update(a=bar.id)
Run Code Online (Sandbox Code Playgroud)
您无法使用ID更新ForeignKey字段.您应该传递模型对象来更新它.你可以试试
for fr,to in d.items():
Test.objects.filter(id=fr).update(id=to)
test_obj = Test.objects.get(id=to)
Question.objects.filter(test_id=fr).update(test=test_obj)
Run Code Online (Sandbox Code Playgroud)
从Django 1.8开始,您可以使用idForeignKey对象来更新对象.
for fr,to in d.items():
Test.objects.filter(id=fr).update(id=to)
Question.objects.filter(test_id=fr).update(test_id=to)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11942 次 |
| 最近记录: |