django-positions
django-positions copied to clipboard
Multi-table model inheritance using parent_link not working
I have a few models that inherit from a parent one, for example:
class ContentItem(models.Model):
class Meta:
ordering = ['position']
content_group = models.ForeignKey(ContentGroup)
position = PositionField(collection='content_group', parent_link='contentitem_ptr')
class Text(ContentItem):
title = models.CharField(max_length=500, unique=False, null=True, blank=True)
I understand I need to use the parent_link
argument. But I get this error when I use it:
websites.Text: (models.E015) 'ordering' refers to the non-existent field 'position'.
I've tried various field names such as websitecontentitem_ptr, websitecontentitem_ptr_id
etc but no luck. What am I doing wrong?
I should say up front that I'm not actively using this project anymore, so I'm probably not going to be able to help all that much. I also haven't been involved in any recent maintenance, so I can't speak for how well the project has tracked changes to Django, etc. It's entirely possible that things have changed enough that using this code is now more trouble than it's worth.
That said, I was able to reproduce your issue when running makemigrations
. I found two ways to get past the error:
- Add
abstract = True
toContentItem.Meta
- Remove
ordering = ['position']
fromContentItem.Meta
and plan to rely onText.objects.order_by('position')
If an abstract base model is appropriate for your use case, that's probably the option I would choose.
Good luck with your project. I wish I could be more helpful, but I can't afford the time away from other priorities.