Django foreign key relation in template

匿名 (未验证) 提交于 2019-12-03 01:58:03

问题:

i know you will say that this question is asked before many times but i havent solved it yet...

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

templates:

{% for i in docimage.property_set.all %}  {{ i.image.url }}    {% endfor %} 

i have tried above template but i didnt get any result. so i want to get imageurl adress in DocImage class...

all helps

回答1:

If you review the foreign key documentation, if you have a relationship like

Doc -> has many DocImages 

you need to define your foreign key on the DocImages class like so:

class DocImage(models.Model):     property = models.ForeignKey(Doc, related_name='images') 

If you don't set related names, you can access the DocImages from the Doc like:

Doc.docimage_set.all() 

Docs on Related Objects

But setting related_name in the property field lets you do

Doc.images.all() 

Just make sure whatever you pass to the template in the view context matches what is used in the template, e.g.

# in the view return render_to_response('mytemplate.html', { 'mydoc' : doc, 'mydocimage' : img } 

This can then be used in the template as follows:

# 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 }} 


回答2:

  • first you iterate over the result
  • the images related to a Doc are retrieved by the images property of doc which is generated from the related_name attribute in the ForeignKey

code:

{% for doc in result %}   {% for docimage in doc.images.all %}     {{ docimage.image.url }}   {% endfor %} {% endfor %} 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!