你好,我在2天后就已经陷入困境,以获得反向关系。 我想把“bilder”的照片变成相关的“doku”。 该网站返回{{doku.name}},但没有来自相关模型“bilder”
的循环我尝试了几乎所有在互联网上找到的东西,但也许我只是监督了什么?
这是我的models.py:
class Doku(models.Model):
name = models.CharField(max_length=1000)
inhalt = models.TextField(blank=True, null=True)
erstellungsdatum = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name = "Dokumentation"
verbose_name_plural = "Dokumentationen"
def __str__(self):
return self.name
class Bilder(models.Model):
doku = models.ForeignKey(Doku, on_delete=models.CASCADE)
name = models.CharField(max_length=1000)
bilder = models.ImageField(upload_to="bilder/doku/")
def __str__(self):
return self.name
my views.py
@login_required(login_url='login')
def Dokus(request):
doku = Doku.objects.all()
context = {'doku':doku}
return render(request, "doku/index.html", context)
和我的模板:
{% for doku in doku %}
<a href="{% url 'apps:DokuDetail' doku.pk %}">{{ doku.name }}</a>
{{ doku.bilder.name }}
{% for bilder in doku.bilder_set.all %}
<img src="{{ bilder.bilder.url }}">
<p>{{ bilder.name }}</p>
{% endfor %}
{% endfor %}
编辑:这是我的urls.py:
from django.urls import path
from . import views
from django.contrib.auth import views as auth_views
app_name = "apps"
urlpatterns = [
path('doku/', views.Dokus, name="Doku"),
path('doku/create', views.DokuCreate.as_view(), name="DokuCreate"),
path('doku/detail/<int:pk>', views.DokuDetail.as_view(), name="DokuDetail"),
path('doku/update/<int:pk>', views.DokuUpdate.as_view(), name="DokuUpdate"),
path('doku/delete/<int:pk>', views.DokuDelete.as_view(), name="DokuDelete"),
path('doku/picadd', views.BilderCreate.as_view(), name="DokuBilderCreate"),
]
答案 0 :(得分:0)
{{ doku.bilder.name }}
无效。删除它。
同样,{{dokubilder.dokubilder.url}}
无效,因为模板上下文中没有dokubilder
。
对于您发布的模型,在模板中循环{% for bilder in doku.bilder_set.all %}
应该有效。如果没有,您需要提供有关如何重现问题的更多信息。
我建议你为实例和查询集使用不同的变量名,例如: {% for doku in docku_list %}
。如果您将其更改为docku_list
,请记住更新您的观点。
{% for doku in dokus %}
<a href="{% url 'apps:DokuDetail' doku.pk %}">{{ doku.name }}</a>
{% for bilder in doku.bilder_set.all %}
<p>{{ bilder.name }}</p>
{% endfor %}
{% endfor %}