Django foreign key relation in template

后端 未结 2 1924
無奈伤痛
無奈伤痛 2020-12-02 23:34

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 =  mode         


        
相关标签:
2条回答
  • 2020-12-03 00:05
    • 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 %}
    
    0 讨论(0)
  • 2020-12-03 00:07

    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 }}
    
    0 讨论(0)
提交回复
热议问题