首页 > 解决方案 > 无法在 django 中使用 update_or_create 方法将数据发布到数据库

问题描述

我有一个具有多个字段的模型。这是我的views.py:

def person(request): 
     customer=request.user.customer

     if request.method == "POST":
            hobbies=request.POST['hobbies']
            sports=request.POST['sports']
            school=request.POST['school']
            swimming=request.POST['swimming']
            
    
            details=Details.update_or_create(hobbies=hobbies,sports=sports,school=school,swimming=swimming)
    
            details.save()

这是模型.py

class Details(models.Model):
    customer=models.ForeignKey(Customer,on_delete=models.SET_NULL,null=True)
    swimming=models.CharField(max_length=200,null=False)
    sports=models.CharField(max_length=300,null=False)
    hobbies=models.CharField(max_length=200,null=False)
    school=models.CharField(max_length=200,null=False)

每当客户在 html 表单中输入相应的详细信息时,如果他是第一次输入,并且如果他之前已经输入了详细信息但希望编辑它们,我希望将其保存,我想更新相同的对象而不是创建一个新的。我尝试使用 update_or_create 方法,但它给了我错误。请帮我。谢谢

标签: pythondjango

解决方案


你可以使用这样的东西,所以如果任何字段与关系 customer=request.user 相关联,那么它将更新数据,如果没有,那么它将创建一个新的 details=Details.update_or_create(customer=request .user,默认={爱好=爱好,运动=运动,学校=学校,游泳=游泳})

注意:当您创建、更新查询集的方法时,您不必像做 details.save() 那样保存在查询集中


推荐阅读