从概念上讲,我想这样做:
deletestring = graphname+'.objects.filter('+graphname+'aid_id='+myid+')'
deletestring.delete()
其中graphname和myid是变量,但这给了我一个' str'对象没有属性'删除' AttributeError的。如何更改此命令告诉python / Django使用我的字符串从模型中删除匹配的记录?谢谢!
更新: 感谢尚旺,部分问题得以解决。
# This works
graphname = 'g5'
modelnamevar = apps.get_model('nbig', graphname)
modelnamevar.objects.filter(g5aid_id=myid).delete()
# This does not work:
graphname = 'g5'
modelnamevar = apps.get_model('nbig', graphname)
myfieldname = graphname + 'aid_id'
modelnamevar.objects.filter(myfieldname=myid).delete()
我收到一条消息"无法解析关键字' myfieldname'进入一个领域。 是否可以转换此字符串以便将其识别为字段名称?谢谢!
答案 0 :(得分:0)
在django中,您可以使用以下命令从字符串中获取模型:
from django.apps import apps
Model = apps.get_model(app_label='your-app-label', model_name='graphname')
关于get_model function的Django doc。
顺便说一句,不要使用字符串来编写程序,它不会执行。 子>
答案 1 :(得分:0)
在另一篇文章的帮助下,我发现这将有效:
modelname='g5'
modelnamevar = apps.get_model('nbig', modelname)
myfield = modelname + 'aid_id'
kwargs = {myfield: myid}
modelnamevar.objects.filter(**kwargs).delete()