1

我将公司信息和类别信息传递给 Django 模板页面,我想从 Company.companycategory 中获取一个值,并在另一个模型 CompanyCategory 中查找此 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')
4

2 回答 2

1

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

看来这ReferenceProperty将为您在 appengine 上提供类似的功能。 https://developers.google.com/appengine/docs/python/datastore/typesandpropertyclasses#ReferenceProperty 允许每个公司引用一个类别并将其作为属性提供。

如果您无法创建参考属性,那么我相信您只需在视图中为每家公司查找相应的类别,或者您可以在模型上创建一个方法来为您获取这些数据,特别是因为这看起来像这可能是一个常见的操作。使用装饰方法@property应该允许您在模板中访问它。

于 2012-05-25T15:30:05.060 回答
0

在@dm03514 的帮助下,我可以访问实际值和文本,而无需使用进一步查找{{company.companycategory.categoryname}}

于 2012-05-28T15:14:21.750 回答