Я работаю над проектом django, в котором я создаю набор из трех абстрактных моделей, которые позже я буду использовать для различных приложений, каждый из которых будет содержать эту иерархию из трех моделей.Например:
class Book(models.Models):
name = models.CharField(...)
author = models.CharField(...)
...
objects = BookManager()
class Meta:
abstract = True
class Page(models.Models):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
chapter = models.CharField(...)
...
objects = PageManager()
class Meta:
abstract = True
class Word(models.Models):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
line = models.IntegerField(...)
...
objects = WordManager()
class Meta:
abstract = True
Помимо этих абстрактных классов, я хочу предоставить настраиваемые классы Model Manager для каждого абстрактного класса, которые позже пригодятся в приложениях, которые наследуют менеджеры
class BookManager(models.Manager):
def computePrice(self, user, printJob):
price = 0
...
class PageManager(models.Manager):
def getPagesOfBook(self, book):
return self.filter(content_type=book, object_id=book.id)
...
....
Общий вопрос: возможно ли вообще создать настраиваемые менеджеры моделей для абстрактных классов и использовать их в моделях, которые наследуют абстрактный класс?
Причина, по которой я спрашиваю, заключается в том, что я не смог реализоватьэто без получения дырочного набора исключений каждый раз, когда я выполняю запросы.Я также попробовал другой способ, запустив запросы в абстрактном представлении (я также создаю абстрактное представление), хотя бывают такие же исключения.
Если я не ошибаюсь, то одна из причин, почему это не работает, -потому что абстрактные модели не могут быть запрошены.В основном я спрашиваю, есть ли способ, как я могу реализовать то, что я описал выше, и если да, то как это можно сделать.
Request Method: POST
Request URL: http://127.0.0.1:8000/
Django Version: 1.3
Exception Type: AttributeError
Exception Value: 'Options' object has no attribute '_join_cache'
Exception Location: /usr/local/lib/python2.7/dist-packages/django/db/models/sql/query.py in setup_joins, line 1267
Python Executable: /usr/bin/python
Python Version: 2.7.1