Python 是否可以在Django模型中使用变量字符串before.delete
从概念上讲,我想这样做:Python 是否可以在Django模型中使用变量字符串before.delete,python,django,variables,delete-row,Python,Django,Variables,Delete Row,从概念上讲,我想这样做: deletestring = graphname+'.objects.filter('+graphname+'aid_id='+myid+')' deletestring.delete() 其中graphname和myid是变量,但这给了我一个“str”对象没有属性“delete”AttributeError。我如何更改它以告诉python/Django使用我的字符串从模型中删除匹配的记录?谢谢 更新: 多亏了尚旺,部分问题得以解决 # This works gra
deletestring = graphname+'.objects.filter('+graphname+'aid_id='+myid+')'
deletestring.delete()
其中graphname和myid是变量,但这给了我一个“str”对象没有属性“delete”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”解析为字段。
是否可以转换此字符串以便将其识别为字段名?谢谢!在django中,您可以使用以下方法从字符串中获取模型:
from django.apps import apps
Model = apps.get_model(app_label='your-app-label', model_name='graphname')
Django博士关于
顺便说一句,不要使用字符串来编写程序,它不会执行。在另一篇文章的帮助下,我发现这样做可以:
modelname='g5'
modelnamevar = apps.get_model('nbig', modelname)
myfield = modelname + 'aid_id'
kwargs = {myfield: myid}
modelnamevar.objects.filter(**kwargs).delete()
graphname是您定义的模型的名称吗?是的,graphname是保存模型名称的变量,也是模型字段的前缀(例如:graphname='g2',field name='g2aid_id')。只需使用
exec
../s即可