Модель прокси Django и ForeignKey

Как сделать entry.category экземпляром CategoryProxy? Подробнее см. В коде:

class Category(models.Model): pass

class Entry(models.Model):
    category = models.ForeignKey(Category)

class EntryProxy(Entry):
    class Meta:
        proxy = True

class CategoryProxy(Category):
    class Meta:
        proxy = True

entry = EntryProxy.objects.get(pk=1)
entry.category # !!! I want CategoryProxy instance here

Приведение из категории в CategoryProxy тоже нормально, но я не очень хорошо знаком с внутренними функциями ORM для правильного копирования внутреннего состояния ...

ИЗМЕНИТЬ. Класс ForeignKey (Категория) ...

Как сделать entry.category экземпляром CategoryProxy? Подробнее см. В коде:

class Category(models.Model): pass

class Entry(models.Model):
    category = models.ForeignKey(Category)

class EntryProxy(Entry):
    class Meta:
        proxy = True

class CategoryProxy(Category):
    class Meta:
        proxy = True

entry = EntryProxy.objects.get(pk=1)
entry.category # !!! I want CategoryProxy instance here

Приведение из категории в CategoryProxy тоже нормально, но я не очень хорошо знаком с внутренними функциями ORM для правильного копирования внутреннего состояния ...

ИЗМЕНИТЬ. Класс ForeignKey (Категория) ...

Как сделать entry.category экземпляром CategoryProxy? Подробнее см. В коде:

class Category(models.Model): pass

class Entry(models.Model):
    category = models.ForeignKey(Category)

class EntryProxy(Entry):
    class Meta:
        proxy = True

class CategoryProxy(Category):
    class Meta:
        proxy = True

entry = EntryProxy.objects.get(pk=1)
entry.category # !!! I want CategoryProxy instance here

Приведение из категории в CategoryProxy тоже нормально, но я не очень хорошо знаком с внутренними функциями ORM для правильного копирования внутреннего состояния ...

ИЗМЕНИТЬ. Причина: я добавил метод в CategoryProxy и хочу его использовать:

EntryProxy.objects.get(pk=1).category.method_at_category_proxy()

РЕДАКТИРОВАТЬ 2. В настоящее время я реализовал это так:

EntryProxy._meta.get_field_by_name('category')[0].rel.to = CategoryProxy

но выглядит ужасно ...

15
задан Vladimir Mihailenco 13 October 2010 в 12:21
поделиться