object.save(commit=False)
과 같은 작업을하면 m2m 관계가 자동으로 저장되지 않지만 나중에 object.save()
으로 전화하면 self.save_m2m()
으로 전화해야합니다.왜 save_m2m()이 save() 호출을 자동으로하지 않습니까?
save()
을 부르기 때문에 나는 왜 수동으로 save_m2m()
을 호출해야하는지 이해할 수 없습니다.
누군가가이 논리를 설명 할 수 있습니까?
감사합니다.
object.save(commit=False)
과 같은 작업을하면 m2m 관계가 자동으로 저장되지 않지만 나중에 object.save()
으로 전화하면 self.save_m2m()
으로 전화해야합니다.왜 save_m2m()이 save() 호출을 자동으로하지 않습니까?
save()
을 부르기 때문에 나는 왜 수동으로 save_m2m()
을 호출해야하는지 이해할 수 없습니다.
누군가가이 논리를 설명 할 수 있습니까?
감사합니다.
설명서에 설명되어 있습니다.
form.save()
에는 M2M 관계 생성 및 저장이 포함됩니다. 이는 양식이 한 번에 모든 것을 할 수 있기 때문입니다. 그러나 commit=False
을 사용하자 마자 양식은 더 이상 M2M 관계를 만들지 못합니다. 객체 자체가 저장되지 않았기 때문입니다. M2M은 연결할 ID 없이는 불가능합니다.
object.save()
은 모델 인스턴스 개체가 아닌 양식의 동작이기 때문에 save_m2m
을 호출 할 수 없습니다. 이 객체는 양식을 만들 수 없기 때문에이 시점에서 m2m 관계를 알지 못합니다. 그래서 양식 인의 save_m2m 메소드를 호출해야합니다.
Gotcha. 고맙습니다. –