Python 异常值:';用户';对象没有属性';更新';被扔进了DJANGO ORM

Python 异常值:';用户';对象没有属性';更新';被扔进了DJANGO ORM,python,python-3.x,django,django-models,Python,Python 3.x,Django,Django Models,我不知道下面的语句有什么问题,我得到的“User”对象在DJANGO ORM中没有抛出属性“update” if "device_id" in request_data: try: User.objects.get(device_id=request_data["device_id"]).update(device_id=None) except ObjectDoesNotExist:

我不知道下面的语句有什么问题,我得到的“User”对象在DJANGO ORM中没有抛出属性“update”

if "device_id" in request_data:
        try:
            User.objects.get(device_id=request_data["device_id"]).update(device_id=None)
        except ObjectDoesNotExist:
            pass

update方法是queryset的一种,当您在queryset上调用get时,它将返回对象。所以您可以通过设置object的属性来更新object

您可以按如下方式更新对象:

if "device_id" in request_data:
    try:
       u = User.objects.get(device_id=request_data["device_id"])
       u.device_id=None
       u.save()
    except ObjectDoesNotExist:
        pass
方法用于在一个人的位置更新多个对象,其中在调用
get
方法后,您有一个实例。 替换此项:

User.objects.get(device_id=request_data["device_id"]).update(device_id=None)
为此:

user=user.objects.get(设备\u id=request\u data[“设备\u id”])
user.device\u id=None
user.save()
或者更好的做法是允许
device\u id
字段(我认为是ForeignKey)为空:

#您的模型类防御
...
device=models.ForeignKey('on\u device\u model',null=True,blank=True,on\u delete=models.deletation.DO\u NOTHING)
...