Django에서 ManyToMany를 사용할 때 주의할 점

ManyToMany 관계를 맺은 객체는 객체변수 중 외부객체와 관련 없는 객체변수들만으로 먼저 저장을 한다. 그리고 난 후 add, remove 함수를 사용하여 외부 객체와의 관계를 정의한 후, 다시 한 번 저장해야 한다. 아래는 예제 코드이다.

def register(request)
    equip = Equipment()
    equip.model_no = request.POST.get(‘model_no’)
    equip.serial_no = request.POST.get(‘serial_no’)
    equip.registered_date = datetime.now()
    equip.save()
    equip.alpha_code.add(Code.objects.get(id=int(request.POST.get(‘alpha_code’))))
    equip.bravo_code.add(Code.objects.get(id=int(request.POST.get(‘bravo_code’))))
    equip.charlie_code.add(Code.objects.get(id=int(request.POST.get(‘charlie_code’))))
    equip.save()
    return HttpResponseRedirect(reverse(‘somewhere:defcon’, args=(equip.id,)))
cs

참고로, ForeignKey나 OneToOne은 아래와 같이 처리하면 된다.

cup = Cup()
cup.name = ‘Starbucks Tumbler #21’
cup.store = Store.objects.get(name=’STARBUCKS’)
food.save()
cs

참고. 실행환경

– OS : Windows 7 Professional K

– Python : v 2.7.5

– Django : v 1.7.11

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤