Hi Malcolm,

Thanks very much for the quick reply. I'm using this code as part of a
view in which I'm processing an import of data (part of my reusable
django-batchimport app on google code). Here's a dpaste of the main
part of the code: http://dpaste.com/111306/

"model_import_info.model_for_import" (from the code) returns the
appropriate model. I've confirmed that it is returning a Student model
in this case (as the call to get at line #3 works just fine). I *am*
reusing this model over and over, btw. However, I have confirmed that
even if I create it anew each time, I get the same behavior. Also,
none of the data I am using actually has a Parent in it (the
ManyToMany field culprit).

To your point, I've tried it both with explicitly setting the model to
Student and using get_model. Using both methods, it works at
interactive prompt but not in the view.

Here's a dpaste of the exact stack trace I'm getting: http://dpaste.com/111304/

Not to confuse the issue, but looking at the django code from the
dpaste -- at the "setattr(self, field.attname, val)" call (line 38 on
dpaste link) -- the local variables tell me I'm dealing with a
ManyToMany object (<django.db.models.fields.related.ManyToManyField
object at 0x2e04c90>). I say that just to rule out some problem with
the School object (a OneToMany) that *IS* being passed in.

I appreciate any time you have to spend on it very much.

Best,
Keyton





On Jan 20, 11:02 pm, Malcolm Tredinnick <malc...@pointy-stick.com>
wrote:
> On Tue, 2009-01-20 at 19:32 -0800, Keyton Weissinger wrote:
> > Hello,
>
> > OK. I'm totally stuck. I am trying to create an object (of type
> > Student -- see below) with the following:
>
> > new_student = Student.objects.create(**import_object_dict)
>
> > I'm using the following dictionary as "import_object_dict" above
> > (aside from the name of the school, this is fake data, so no privacy
> > worries):
>
> > import_object_dict={'address': u'142, Quilly Lane', 'city':
> > u'Columbus', 'dob': '1956-12-29', 'email':
> > u'miles.l.ye...@spambob.com', 'first_name': u'Yeung', 'phone_primary':
> > u'614-468-5940', 'school': <School: ARBOR MONTESSORI (DECATUR, GA)>,
> > 'state': u'OH', 'title': u'Mr.', 'type': u'Student', 'zip': 43215.0}
>
> > Note that I am NOT yet trying to SAVE the Student object, just
> > instantiate it.
>
> > But every time I try to instantiate this new Student, I get the
> > following error:
> > 'Student' instance needs to have a primary key value before a many-to-
> > many relationship can be used.
>
> > The Student object DOES have a ManyToMany relationship (with Parent --
> > see below) but I'm not in any way trying to access it here.
>
> > I am using inheritance which may be complicating matters (see models
> > below).
>
> > And here's a clue that may help you (but hasn't yet helped me):
>
> > When I try this on the command line (using "manage.py shell" and then
> > importing Student, creating a School object, etc) it works just fine.
> > No error. Using the exact same dictionary as above the exact same way.
>
> > Also, the code above isn't exactly accurate. I'm actually dynamically
> > getting the model object using get_model. I simplify the question here
> > because I've used the same exact method to create other types of
> > objects (without ManyToMany fields) with no problem whatsoever.
>
> Bonus points for a clear problem description, so thanks for doing that.
> Nothing jumps out at me as obviously wrong, unfortunately.
>
> You don't mention how you're using this when it fails -- is it part of a
> script or a view or what? In any case, I would try removing the call to
> get_model(). Even if you just test that the model name is what you think
> should return the Student model and then explicitly set the class you're
> creating to be Student, instead of whatever get_model() returns. I
> *hope* that won't make a difference, because get_model() and friends
> give me a nose-bleed (and James Bennett gets far too much enjoyment out
> of watching me fix those bugs), but it would be nice to know one way or
> the other.
>
> Are you using get_model() at the interactive prompt? Does it work there
> instead of failing?
>
> I'll try to make some time later on today to experiment with the code
> you've given here and see if I can repeat it (in the middle of something
> right now and just rest my brain by answering email, so not able to do
> it this minute, sorry).
>
> Right now, though, it's not obvious what you're doing that is strange.
> Which is a shame.
>
> Regards,
> Malcolm
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to