Django模板中的辅助键

时间:2012-05-25 15:18:57

标签: python django google-app-engine

我将公司信息和类别信息传递到Django模板页面,我想从Company.companycategory中获取一个值,并在另一个返回人类可读字符串的ModelCategory模型中查找此ID。有没有办法在模板中执行此操作?

{% 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模型查找记录的ID,我发送了一个类别列表。所以我想我唯一的选择是循环寻找匹配的所有类别?或者有更好的方法吗?

这是所要求的模型:

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')

2 个答案:

答案 0 :(得分:1)

如果您使用的是vanilla django,您的模型似乎足够相关以保证ForeignKey关系,在这种情况下您可以通过类似company.companycategory.name

的方式访问公司类别

似乎ReferenceProperty会在appengine上提供类似的功能。 https://developers.google.com/appengine/docs/python/datastore/typesandpropertyclasses#ReferenceProperty 允许每家公司参考一个类别并将其作为财产提供。

如果您无法创建引用属性,那么我相信您只需在视图中为每个公司查找相应的类别,或者您可以在模型上创建一个方法来为您获取此数据,尤其是这似乎是一种常见的操作。使用@property修饰方法应该允许您在模板中访问它。

答案 1 :(得分:0)

在@ dm03514的帮助下,我可以访问真实值,因此无需使用{{company.companycategory.categoryname}}

进一步查找文本