And your second function works because when you set meeting.place = meeting.place, unsaved place object gets changed with saved place object :) Nice catch though.
19 Ağustos 2011 15:28 tarihinde Yaşar Arabacı <yasar11...@gmail.com> yazdı: > It is because you are creating meeting object, before saving "place" in db. > So place object doesn't have any id yet. So test 1 should be: > > place = Place(where='Paris') > place.save() > meeting = Meeting(place=place, when='2011-01-01') > > > > meeting.save() > return meeting > 2011/8/19 Jacco <jacquet.da...@gmail.com> > >> I am having great difficulties in saving nested models in an easy >> way. >> >> >> Consider the following Example : >> >> ---------------------------------------------------------------------------------------------------------------------------------------------- >> class Place(models.Model): >> where = models.CharField(max_length=10) >> class Meeting(models.Model): >> place = models.ForeignKey(Place) >> when = models.DateField() >> >> #Two (almost) identical functions: >> def test1(): >> place = Place(where='Paris') >> meeting = Meeting(place=place, when='2011-01-01') >> >> place.save() >> >> meeting.save() >> return meeting >> >> def test2(): >> place = Place(where='Paris') >> meeting = Meeting(place=place, when='2011-01-01') >> >> place.save() >> meeting.place = meeting.place #BY setting meeting.place to >> itself, it works !!!!!!!!!!!! >> meeting.save() >> return meeting >> >> ---------------------------------------------------------------------------------------------------------------------------------------------- >> >> >> >> - Running test1() results in crash "null value in column "place_id" >> violates not-null constraint" >> - Running test2() results in OK. >> - Only difference is the dummy line "meting.place = meeting.place". >> >> Could someone who really understands this explain what is going on? >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To post to this group, send email to django-users@googlegroups.com. >> To unsubscribe from this group, send email to >> django-users+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/django-users?hl=en. >> >> > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.