Python 如何在views.py中动态选择django模型字段
我正在使用DRF,并尝试从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']
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)