2010-05-09 2 views
3

내가 내 장고 응용 프로그램에 관련된 두 모델 (일대)을 가지고 있고이저장 관련 모델은

ObjBlog = Blog() 
objBlog.name = 'test blog' 

objEntry1 = Entry() 
objEntry1.title = 'Entry one' 

objEntry2 = Entry() 
objEntry2.title = 'Entry Two' 

objBlog.entry_set.add(objEntry1) 
objBlog.entry_set.add(objEntry2) 

같은 작업을 수행 할 때 나는 열에서 "null 값이라는 오류가 발생하고는 위반 객체 외래 키가 아닌 제약 조건 ".

내 모델 개체가 저장되지 않았습니다. 항목을 설정하기 전에 "objBlog"를 저장해야합니까? objBlog에서 save 메서드를 호출하여이 메서드를 모두 저장할 수 있기를 바랍니다.

참고 : 블로그 엔진을 만들지 않고 있으며 이것은 단지 예일뿐입니다.

+2

한 다음 add 방법과 같은 방법

입니다. :) – TelegramSam

+0

블로그 객체를 저장해야하므로 https://docs.djangoproject.com/en/dev/ref/models/relations/#django.db.models.fields.related.RelatedManager.add –

답변

0

귀하의 모델 중 하나에 Null 허용되지 않는 외래 키 필드가 있다고 생각됩니다. objBlog.entry_set.add(objEntry1) django는 각 객체에 save()를 호출합니다. 노트에 대한

def add(self, *objs): 
    for obj in objs: 
     if not isinstance(obj, self.model): 
      raise TypeError("'%s' instance expected" % self.model._meta.object_name) 
     setattr(obj, rel_field.name, instance) 
     obj.save() 
add.alters_data = True 
+0

정보가 유용 할 수 있습니다. 항목 개체를 저장하기 전에? – iJK

+0

자동 저장되며 모델은 어떻게 생겼습니까? Django는 아마도 그 중 하나 또는 둘 모두에서'Blog'와'Entry' 이외의 다른 모델에 대한 FK 관계가 null 일 수 있기 때문에 아마도 불평 할 것입니다. 실제 추적은 실제 도움을 제공하거나 실제 예외를 제공하는 데 도움이됩니다. –

+0

블로그 개체를 먼저 저장해야했습니다. 아마도 Django가 Blog 객체를 먼저 저장 한 다음 Entry 객체를 저장할 것이라고 생각했습니다. "save"라고 말하면 objBlog.save()를 실행하고 나서이 objBlog.entry_set.add (objEntry)를 수행합니다. 이제 부모 개체를 먼저 저장해야한다는 것을 알고 있습니다. – iJK