Hi all,
I using django 1.2
I have a problem with model and Foreign Key on self table.
I try to explain the problem with an example:
I have one table like this :
class Test_obj ( models.Model ):
name = models.CharField(max_length=255, unique=True, null=True)
use = models.ForeignKey('self', to_field='name',null=True, db_column='use')
class Meta:
abstract = True
class Test ( Test_obj ):
host_name = models.CharField(max_length=255, unique=True,
null=True)
alias = models.CharField(max_length=255, null=True)
def __unicode__(self):
if self.name:
return self.name
else:
return self.host_name
Now, in shell, I create some objects and I delete a parent object "template1"
and django works as I'm expect emulating
on delete cascade :
In [8]: template1 = Test(name='template1')
In [9]: template1.save()
In [10]: host1 = Test(host_name='host1')
In [11]: host2 = Test(host_name='host2')
In [12]: host3 = Test(host_name='host3')
In [13]: host1.use = template1
In [14]: host2.use = template1
In [15]: host3.use = template1
In [16]: host1.save()
In [17]: host2.save()
In [18]: host3.save()
In [19]: Test.objects.all()
Out[19]: [<Test: template1>, <Test: host1>, <Test: host2>, <Test: host3>]
In [20]: template1.delete()
In [21]: Test.objects.all()
Out[21]: []
But I don't understand why django do the same thing when I delete a children :
In [27]: Test.objects.all()
Out[27]: [<Test: host1>, <Test: host2>, <Test: host3>, <Test: template1>]
In [28]: hos1 = Test.objects.get(host_name='host1')
In [29]: host1.delete()
In [30]: Test.objects.all()
Out[30]: []
Is this a django bug or I'm wrong something ?
Thank you,
Dave
--
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.