what tutorial para framework español develop python django django-models django-templates foreign-key-relationship

python - tutorial - Django relación de clave extranjera en plantilla



python django (2)

Si revisa la documentación de la clave externa , si tiene una relación como

Doc -> has many DocImages

necesita definir su clave externa en la clase DocImages de la siguiente manera:

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

Si no establece nombres relacionados, puede acceder a las DocImages desde el Doc como:

Doc.docimage_set.all()

Documentos sobre objetos relacionados

Pero la configuración de related_name en el campo de propiedad te permite hacer

Doc.images.all()

Solo asegúrese de que todo lo que pase a la plantilla en el contexto de la vista coincida con lo que se usa en la plantilla, por ejemplo

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

Esto se puede utilizar en la plantilla de la siguiente manera:

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

Sé que dirá que esta pregunta se ha hecho antes muchas veces, pero aún no la he resuelto ...

modelos.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)

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

plantillas:

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

He probado la plantilla anterior pero no obtuve ningún resultado. Así que quiero obtener una dirección imageurl en la clase DocImage ...

todo ayuda


  • primero iteras sobre el resultado
  • las imágenes relacionadas con un documento se recuperan mediante la propiedad images del documento que se genera a partir del atributo related_name en ForeignKey

código:

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