> advisor.delete() I expect should just delete the advisor object and
> change p2.advisor and p4.advisor to None but advisor.delete() deletes
> p2 and p4.

This is the expected behavior, and it's behavior that's required to
maintain referential integrity in the database. The docs mention it at
http://www.djangoproject.com/documentation/db-api/#deleting-objects :
"When Django deletes an object, it emulates the behavior of the SQL
constraint ON DELETE CASCADE - in other words, any objects which had
foreign keys pointing at the object to be deleted will be deleted
along with it."

> Is there no way to have an optional relationship to a
> foreignobject. Ofcourse I can find all related objects for advisor,
> disconnect them from advisor and then delete the advisor.

This is exactly what you'll have to do. Maybe something like this
(untested):

for p in Person.objects.filter(advisor=advisor):
    p.advisor = None
    p.save()
advisor.delete()

You could also override Person's delete() method to make this the
default behavior.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to