Django 从模板中的父对象访问代理模型

Django 从模板中的父对象访问代理模型,django,django-templates,Django,Django Templates,我有以下Django模型,它扩展了Django basic博客的Post模型: from django.basic.blog.models import Post from l10n.utils import lookup_translation class ExtendedPost(Post): class Meta: proxy = True def translated_title(self, language_code=None): re

我有以下Django模型,它扩展了Django basic博客的Post模型:

from django.basic.blog.models import Post
from l10n.utils import lookup_translation

class ExtendedPost(Post):
    class Meta:
        proxy = True
    def translated_title(self, language_code=None):
        return lookup_translation(self, 'title', language_code)
我试图通过覆盖django basic博客的模板并利用其中新的ExtendedPost行为来使用django basic博客的视图:

{{ post.extendedpost.translated_title }}
但很明显,这不起作用,因为您不能只访问这样的子类。你是怎么做这种事情的?

你可以

{{ post.extendedpost.translated_title }}
如果使用多表继承而不是代理模型,则可以使用


然而,仅仅为了添加一个函数而引入一个全新的表并没有多大意义。

好吧,视图仍然会引用原始模型,因此您必须修改视图以传入
ExtendedPost

您不能只定义一个代理模型,然后让它神奇地覆盖父类

  • 未经测试的想法基于:

  • 覆盖系统模块

    import sys
    from django.basic.blog import models
    
    models.Post.translated_title = lambda self, language_code=None: lookup_translations(self, 'title', language_code)
    

  • 有没有一种方法可以修改(重用)视图而不用在我自己的代码中重新定义它?我仍然希望以后再使用django basic博客应用程序的更改,不希望每次都要合并这些更改。用2个解决方案更新帖子
    import sys
    from django.basic.blog import models
    
    models.Post.translated_title = lambda self, language_code=None: lookup_translations(self, 'title', language_code)