是否可以在 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()
从概念上讲,我想这样做:
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()