Hi Minglei,
Sorry for the digression. At first I thought you only wanted to solve
your immediate problem of how to add records to a many-to-many relation
to be able to move on. I understand now that you also wonder why one
has to specify the album a second time when the objalbum.song_set
should be able to figure out by itself that a new object should be
linked to objalbum. I agree, that's strange indeed. Consider the
following example:

>>> song = objalbum.song_set.create(name='new_song1')
>>> song.album == objalbum
True

>>> song = objalbum.song_set.get_or_create(name='new_song2')
>>> print song.album
None
(or "IntegrityError: song.album_id may not be NULL" in case NULL is not
allowed for album)

It seems that only one of these correctly handles the relation to
objalbum. Maybe it is a bug after all... ¯\(°_o)/¯
I tested to copy the get_or_create method from QuerySet to
RelatedManager and changed:
    obj = self.model(**params)
into:
    obj = self.model(**params)
    self.add(obj)
in RelatedManager. This seems to do the trick and also reflects the
difference between the implementations of the create method in the two
classes, but I don't know if it's the right way to do it since I'm
relatively new to django. Anyone more experienced who care to comment
on this matter?

Martin


--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users
-~----------~----~----~----~------~----~------~--~---

Reply via email to