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

Is it possible to use a variable string before .delete in Django models

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

deletestring = graphname+'.objects.filter('+graphname+'aid_id='+myid+')'
deletestring.delete() 

其中 graphname 和 myid 是变量,但这给了我一个 'str' object has no attribute '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')

关于 get_model function 的 Django 文档。

对了,不要用string写程序,是不会执行的。

在另一个 post 的帮助下,我发现这行得通:

modelname='g5'
modelnamevar = apps.get_model('nbig', modelname)
myfield = modelname + 'aid_id'
kwargs = {myfield: myid}
modelnamevar.objects.filter(**kwargs).delete()