2012-05-25 3 views
1

Я передаю информацию о компании и информацию о категории на страницу шаблона Django, и я хотел бы взять значение из Company.companycategory и посмотреть этот идентификатор в другой модели CompanyCategory, которая возвращает читаемую пользователем строку , Есть ли способ сделать это в шаблоне?Вторичный ключ в шаблоне Django

{% for company in company_list %} 
    <tr> 
    <td>{{company.companyname}}</td> <td>{{company.companypostcode}}</td> <td>{{company.key.id}}</td> 
    </tr> 
    </div> 
{% endfor %} 

Так company.key.id это идентификатор, который можно использовать для поиска записей из модели CompanyCategory и я посылаю список категорий. Так что, я думаю, мой единственный выбор - перебирать все категории в поисках соответствия? Или есть лучший способ сделать это?

здесь модели по запросу:

class CompanyCategory(db.Model): 
    categoryname = db.StringProperty(required=False) 

    def __unicode__(self): 
      return u'%s' % (self.categoryname) 

class Company(db.Model): 
    companyurl = db.StringProperty(required=False) 
    companyname = db.StringProperty(required=False) 
    companydesc = db.TextProperty(required=False) 
    companyaddress = db.PostalAddressProperty(required=False) 
    companypostcode = db.StringProperty(required=False) 
    companyemail = db.EmailProperty(required=False) 
    companycountry = db.StringProperty(required=False) 
    companyvalid = db.BooleanProperty() 
    companyentrytime = db.DateTimeProperty(auto_now_add=True) 
    companylatlong = db.GeoPtProperty() 
    companycategory = db.ReferenceProperty(CompanyCategory, collection_name='compcategory') 
+0

Как вы определения ваших моделей? –

ответ

1

Если вы использовали ваниль Джанго, похоже ваши модели связаны достаточно, чтобы оправдать ForeignKey отношений, в этом случае вы можете просто получить доступ к категории компании что-то вроде company.companycategory.name

Похоже, что ReferenceProperty предоставит вам аналогичную функциональность на appengine. https://developers.google.com/appengine/docs/python/datastore/typesandpropertyclasses#ReferenceProperty позволяет каждой компании ссылаться на категорию и предоставлять ее как собственность.

Если вы не можете создать ссылочное свойство, то я считаю, что вам просто нужно найти соответствующую категорию в вашем представлении для каждой компании или вы можете создать метод на своей модели, который будет извлекать эти данные для вас, особенно поскольку это похоже на то, что это может быть общая операция. Оформление метода с использованием @property должно позволить вам получить доступ к нему внутри ваших шаблонов.

+0

Спасибо. Я попытался использовать company.companycategory.name, чтобы получить имя внутри шаблона i.e {{company.companycategory.name}}, но мне не удалось связать имя. Я уезжаю теперь смотреть на декораторов .. – Androidian

+0

Это то, что я имею в своем классе компании: 'code' @property \t четкости catname (Self): \t \t возвращение self.companycategory.name \t companycategory = дб. ReferenceProperty (CompanyCategory, collection_name = 'compcategory') 'code' Но я не могу получить название категории с шаблоном как' code' {{company.catname}} 'code' – Androidian

+0

@Androidian Я считаю, что вы обращаетесь к нему через 'collect_name', который вы задали' compcategory', а не имя поля ('companycategory'). Не могли бы вы попробовать 'company.compcategory.categoryname'. Кроме того, это не будет 'name', это будет' categoryname' (потому что это то, что вы определили в своей модели 'CompanyCategory'. Таким образом, либо' company.compcategory.categoryname', либо 'company.companycategory.categoryname', один из них должен работа ~ – dm03514

0

С помощью @ dm03514, я могу получить доступ к реальным ценностям и, следовательно, текст без необходимости дальнейшего глядя вверх с помощью {{company.companycategory.categoryname}}

Смежные вопросы