Hi, I have a bit of a problem with inherited reverse relations and django model inheritance. Consider these models:
class Content(models.Model): display = models.BooleanField() class Link(Content): url = models.URLField() class Teaser(Content): text = models.TextField() link = models.URLField() As we all know, Django uses an implicit OneToOneField for model inheritance. This OneToOneField generates accessors for the reverse relation, which in this case means that objects of the type Content will have a "link" and a "teaser" attribute to access the other side of the one-to-one relation. These attributes are, of course, inherited to the Content subclasses, meaning that Link and Teaser also will have those accessors. But wait, Teaser already defines a link attribute! We got ourselves a nice little name clash. While it's perfectly according to the rules of inheritance for Link and Teaser to inherit the "link" and "teaser" reverse relations accessors, it is also a bit nonsensical in this case. As far as I can tell, it's not possible to suppress the creation of these accessors when defining the model inheritance. Any ideas how to get around this (other than "just rename the link attribute in Teaser, silly!")? Benjamin P.S.: the real use case here is django CMS, with its content plugins all inheriting from a CMSPlugin base class. Since there are e.g. subclasses called Text, Link, and Picture, it's not possible to use field names called "text", "link", or "picture" in a CMSPlugin subclass, which is frustrating and hard to explain to our users. -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at http://groups.google.com/group/django-users?hl=en. For more options, visit https://groups.google.com/groups/opt_out.