Отношение внешнего ключа Django в шаблоне
Я знаю, вы скажете, что этот вопрос задают много раз, но я еще не решил его...
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 %}
Я пробовал шаблон выше, но я не получил никакого результата. поэтому я хочу получить imageurl-адрес в классе DocImage...
все помогает
Ответы
Ответ 1
Если вы просмотрите документацию внешнего ключа, если у вас есть такая связь, как
Doc -> has many DocImages
вам нужно определить свой внешний ключ в классе DocImages следующим образом:
class DocImage(models.Model):
property = models.ForeignKey(Doc, related_name='images')
Если вы не задаете связанные имена, вы можете получить доступ к DocImages из Doc, например:
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 }}
Ответ 2
- сначала вы перебираете результат
- изображения, связанные с Doc, извлекаются с помощью свойства images документа, которое создается из атрибута related_name в ForeignKey
код:
{% for doc in result %}
{% for docimage in doc.images.all %}
{{ docimage.image.url }}
{% endfor %}
{% endfor %}