【问题标题】:django - how to reuse a template for nearly identical models?django - 如何为几乎相同的模型重用模板?
【发布时间】:2011-10-26 17:12:42
【问题描述】:

对于 django 和 python 来说还是相当新的。

我已经定义了两个从基类继承的几乎相同的模型:

class addressbook(models.Model):
    name = models.CharField(max_length=50)

class company(addressbook):
    address = models.CharField(max_length=50)

class contact(addressbook):
    telephone - models.CharField(max_length=30)

我想对公司和联系人对象做非常相似的事情。但是在我的模板中,看起来我需要为每个对象使用单独的模板,因为要访问对象中的成员,我必须使用类似

{{ blah.name }} {{ blah.address}}

合而为一

{{ blah.name }} {{ blah.telephone}} 

在另一个。

所有这些重复让我怀疑。是否有一些 python 或 django 模板语法可以让我在两个模型中重用一个模板(具有某种内置智能)?

感谢您的帮助! W.

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    如果您在模型中创建一个属性来指示每种类型感兴趣的特定字段,这将允许您在模板中使用一个变量。示例:

    class addressbook(models.Model):
        name = models.CharField(max_length=50)
    
    class company(addressbook):
        address = models.CharField(max_length=50)
    
        @property
        def display_field(self):
            return self.address
    
    class contact(addressbook):
        telephone = models.CharField(max_length=30)
    
        @property
        def display_field(self):
            return self.telephone
    

    现在您可以在模板中使用 {{ blah.display_field }} ,它会根据对象类型打印您想要的值。

    【讨论】:

    • 完美!不知道内置的属性...谢谢!
    • 它甚至不必是属性,Django 模板将调用该方法,因为它不需要额外的参数。但是使用property 感觉更好:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 2018-10-31
    • 2012-08-27
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    相关资源
    最近更新 更多