Django - как повторно использовать шаблон для почти идентичных моделей? - PullRequest
3 голосов
/ 26 октября 2011

Все еще довольно плохо знакомы с 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.

1 Ответ

5 голосов
/ 26 октября 2011

Если вы создадите в своих моделях свойство, которое указывает конкретную область интересов для каждого типа, это позволит вам использовать одну переменную в шаблоне. Пример:

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}}, и он напечатает желаемое значение в зависимости от типа объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...