繁体   English   中英

如何在 views.py 中动态 select django model 字段

[英]How to dynamically select django model fields in views.py

我正在使用 DRF,我正在尝试动态地从 django model object 中获取 select 字段,以便我可以将它们与传入数据进行比较。 我知道如何手动执行此操作

def put(self, request):
    businessPage = BusinessPage.objects.get(id=request.data['id'])
    if businessPage.name != request.data['name']:
        businessPage.name = request.data['name']
    if businessPage.address != request.data['address']:
        businessPage.address = request.data['address']        
    businessPage.save()
    res = {
        'status': 'Success'
    }
    return Response(res)

虽然这行得通,但感觉非常混乱和重复,所以我开始寻找一种方法来动态检查 object 字段是否与传入数据匹配。

def put(self, request):
    businessPage = BusinessPage.objects.get(id=request.data['id'])
    for obj in request.data:
        if businessPage[obj] != request.data[obj]:
            businessPage[obj] = request.data[obj]
            
    businessPage.save()
    res = {
        'status': 'Success'
    }
    return Response(res)

我一直无法弄清楚从businessPage获取正确字段的正确语法。 这可能吗? 有没有更好的方法来完成这个任务? 这里的任何帮助将不胜感激!

你可以这样做:

bp_id = request.data.pop("id")
BusinessPage.objects.filter(id=bp_id).update(**request.data)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM