python - Django 模板中的辅助键

标签 python django google-app-engine

我将公司信息和类别信息传递到 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')

最佳答案

如果您使用的是普通 django,那么您的模型似乎足够相关,足以保证 ForeignKey 关系,在这种情况下,您可以通过诸如 company.companycategory.name 之类的内容访问公司类别

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

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

关于python - Django 模板中的辅助键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10757063/

相关文章:

python - 如何读取子进程标准输出的第一个字节,然后在 Python 中丢弃其余字节?

python - 在 for 循环中追加不使用 DataFrames

python - 在 Django 中上传和提交 csv 文件时,“str”不支持缓冲区接口(interface)

java - 收到 GAE 响应时如何处理 JsonSyntaxException

java - com.google.appengine.tools.development.agent.runtime.Runtime 类无法访问该类的成员

node.js - 使用 js 中的 google firebase 云函数向 ios 发送推送通知时出现网络错误

python - 更改矩形的 X 值实际上并不会在 GUI 中移动它

python - 在 Python 中将分号分隔的字符串拆分为字典

python - Windows 上的 GeoDjango : "Could not find the GDAL library"/ "OSError: [WinError 126] The specified module could not be found"

django - 我可以在管理页面上使用 django debug_toolbar 吗?