복붙노트

[SQL] 선택하고 하나의 검색어로 데이터베이스 레코드를 업데이트

SQL

선택하고 하나의 검색어로 데이터베이스 레코드를 업데이트

어떻게 업데이트를 실행하고 오히려 두 개의 쿼리를 수행하는 것보다 같은 검색어 세트에 문을 선택합니까 : - 하나의 개체를 선택합니다 - 그리고 개체를 업데이트하는 한

SQL에서 이에 해당하는 같은 것입니다 :

update my_table set field_1 = 'some value' where pk_field = some_value

해결법

  1. ==============================

    1.의 검색어 개체 업데이트 방법을 사용합니다 :

    의 검색어 개체 업데이트 방법을 사용합니다 :

    MyModel.objects.filter(pk=some_value).update(field1='some value')
    
  2. ==============================

    2.장고 데이터베이스 객체 생성 및 오브젝트를 변경 () 저장 방법 같은를 사용합니다.

    장고 데이터베이스 객체 생성 및 오브젝트를 변경 () 저장 방법 같은를 사용합니다.

    obj = Product.objects.get(pk=pk)
    obj.name = "some_new_value"
    obj.save()
    

    참고 : https://docs.djangoproject.com/en/1.9/ref/models/instances/

  3. ==============================

    3.이 답변은 위의 두 가지 방법을 비교합니다. 당신이 한 줄에 많은 개체를 업데이트하려는 경우에 대한 이동 :

    이 답변은 위의 두 가지 방법을 비교합니다. 당신이 한 줄에 많은 개체를 업데이트하려는 경우에 대한 이동 :

    # Approach 1
    MyModel.objects.filter(field1='Computer').update(field2='cool')
    

    그렇지 않으면 쿼리 세트를 반복해야하고 개별 개체를 업데이트 할 것입니다 :

    #Approach 2    
    objects = MyModel.objects.filter(field1='Computer')
    for obj in objects:
        obj.field2 = 'cool'
        obj.save()
    
  4. ==============================

    4.단지 시리얼 물건의 경우에, 당신은 매우 간단한 방법으로 업데이트 할 수 있습니다!

    단지 시리얼 물건의 경우에, 당신은 매우 간단한 방법으로 업데이트 할 수 있습니다!

    my_model_serializer = MyModelSerializer(
        instance=my_model, data=validated_data)
    if my_model_serializer.is_valid():
    
        my_model_serializer.save()
    

    유일한 형태의 물건의 경우에!

    instance = get_object_or_404(MyModel, id=id)
    form = MyForm(request.POST or None, instance=instance)
    if form.is_valid():
        form.save()
    
  5. from https://stackoverflow.com/questions/2712682/select-and-update-database-record-with-a-single-queryset by cc-by-sa and MIT license