是否可以在Django模型中的.delete之前使用变量字符串

时间:2016-04-07 19:10:17

标签: python django variables delete-row

从概念上讲,我想这样做:

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'进入一个领域。 是否可以转换此字符串以便将其识别为字段名称?谢谢!

2 个答案:

答案 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()