我知道你会说很多次都会问这个问题,但我还没有解决它......
models.py
class Doc(UploadModel):
doc_no = models.CharField(max_length=100, verbose_name = "No", blank=True)
date_added = models.DateTimeField(verbose_name="Date", default=datetime.now,
editable=False)
class DocImage(models.Model):
property = models.ForeignKey(Doc, related_name='images')
image = FileBrowseField("Docs", max_length=200,
directory="doc_img/%Y/%m/%d/%H/%M/%S/",
extensions=[".jpg",".tif"], blank=True, null=True)
views.py
def doc_detail(request, dosc_no):
res = Doc.objects.filter(doc_no = dosc_no)
return render_to_response("doc/doc_detail.html", {"result": res})
模板:
{% for i in docimage.property_set.all %}
{{ i.image.url }}
{% endfor %}
我已经尝试过上面的模板,但我没有得到任何结果。所以我想在DocImage类中获得imageurl地址...
所有帮助
答案 0 :(得分:34)
如果您查看foreign key documentation,如果您有
之类的关系Doc -> has many DocImages
您需要在DocImages类上定义外键,如下所示:
class DocImage(models.Model):
property = models.ForeignKey(Doc, related_name='images')
如果您未设置相关名称,则可以从Doc访问DocImages:
Doc.docimage_set.all()
上的文档
但是在属性字段中设置related_name
可以让您执行
Doc.images.all()
只需确保您在视图上下文中传递给模板的内容与模板中使用的内容相匹配,例如
# in the view
return render_to_response('mytemplate.html', { 'mydoc' : doc, 'mydocimage' : img }
然后可以在模板中使用它,如下所示:
# and in your template to get the images attached to the document
{% for i in mydoc.images.all %}
...
{% endfor %}
# or to get the document the image belongs to
{{ mydocimage.property.date_added }}
答案 1 :(得分:6)
代码:
{% for doc in result %}
{% for docimage in doc.images.all %}
{{ docimage.image.url }}
{% endfor %}
{% endfor %}