On Sat, Nov 20, 2010 at 7:59 AM, marco.ferrag...@gmail.com <marco.ferrag...@gmail.com> wrote: > Hi all! I'm new to django and I'm experimenting with models but I have > some trouble. I've minimized my problem to this code: > > class TestBase(models.Model): > base = models.CharField(max_length=255) > > from django.contrib import admin > class TestA(TestBase): > testb = models.CharField(max_length=255) > > admin.site.register(TestA) > > class TestB(TestBase): > testc = models.CharField(max_length=255) > > admin.site.register(TestB) > > Trying to add TestA instances from admin interface I have this error: > Cannot assign "''": "TestA.testb" must be a "TestB" instance. > > why testb should be a TestB instance?? It's a simple field!
I suspect this is because of something that is described in the MTI docs: http://docs.djangoproject.com/en/1.2/topics/db/models/#multi-table-inheritance Translated to you example the relevant paragraph says: "If you have a TestBase that is also a TestB, you can get from the TestBase object to the TestB object by using the lower-case version of the model name: >>> p = TestBase.objects.get(id=12) # If p is a TestB object, this will give the child class: >>> p.testb <TestB: ...> " The TestA model is inheriting that 'testb' accesor from TestBase to TestB and it is clashing with the identically named field. -- Ramiro Morales -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@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.