Python 如何在views.py中动态选择django模型字段

Python 如何在views.py中动态选择django模型字段,python,django,django-models,django-rest-framework,django-views,Python,Django,Django Models,Django Rest Framework,Django Views,我正在使用DRF,并尝试从django模型对象中动态选择字段,以便将它们与传入数据进行比较。我知道如何手动执行此操作 def put(self, request): businessPage = BusinessPage.objects.get(id=request.data['id']) if businessPage.name != request.data['name']: businessPage.name = request.data['name']

我正在使用DRF,并尝试从django模型对象中动态选择字段,以便将它们与传入数据进行比较。我知道如何手动执行此操作

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)
虽然这样做很有效,但感觉非常混乱和重复,所以我开始寻找一种方法来动态检查对象字段是否与传入数据匹配

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)

这是我努力实现的目标。我确实需要添加一个排列操作符才能让它工作<代码>BusinessPage.objects.filter(id=request.data['id'])。更新(**request.data)