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



댓글 쓰기

0 댓글