Элементы не отображаются в django-шаблоне
Я просто пытаюсь вывести запрос, но он не отображается в шаблоне для одного представления и отображается в другом, я не уверен, почему.
шаблон :
<div class="dropdown">
<button onclick="myFunction()" class="dropbtn">{{vessel_id.name}}</button>
<div id="myDropdown" class="dropdown-content">
{%for vessel in vessel%}
<a href="{% url 'maintenance:home' pk=vessel.id %}">{{vessel.name}}</a>
{%endfor%}
</div>
</div>
в этом представлении {{vessel.name}} не работает и не отображает ни одного выпадающего судна view.py
def update_component(request, pk):
vessel_id = Vessel.objects.get(id=pk)
# get the id of this specfic component
component_id = Component.objects.get(id=pk)
# get the vessel of this specfic component
component_vessel = component_id.vessel
# fetch all components of this specfic vessel
component = component_vessel.components.all()
vessel = Vessel.objects.all()
form = ComponentModelForm(instance=component_id)
if request.method == 'POST' and 'form-update' in request.POST:
form = ComponentModelForm(
request.POST, request.FILES, instance=component_id)
if form.is_valid():
form.save()
return HttpResponseRedirect(request.path_info)
if request.method == 'POST' and 'form-delete' in request.POST:
component_id.delete()
return redirect('/maintenance')
context = {
'components': component,
'form': form,
'component_id': component_id,
'vessel': vessel,
"component_vessel":component_vessel,
'vessel_id':vessel_id
}
return render(request, 'update_component.html', context)
в то время как этот вид прекрасно работает для того же шаблона view.py:
def index(request, pk):
vessel_id = Vessel.objects.get(id=pk)
vessel = Vessel.objects.all()
component = vessel_id.components.all()
component_id = Component.objects.get(id=1)
form = ComponentModelForm(instance=component_id)
if request.method == 'POST':
form = ComponentModelForm(
request.POST, request.FILES, instance=component_id)
if form.is_valid():
form.save()
return HttpResponseRedirect(request.path_info)
context = {
'components': component,
'form': form,
'vessel': vessel,
"vessel_id": vessel_id
}
return render(request, 'maintenance/index.html', context)
Сделайте ваше object имя другим в вашем html и попробуйте снова.
<div class="dropdown">
<button onclick="myFunction()" class="dropbtn">{{vessel_id.name}}</button>
<div id="myDropdown" class="dropdown-content">
{% for vessel_obj in vessel %}
<a href="{% url 'maintenance:home' pk=vessel_obj.id %}">{{vessel_obj.name}}</a>
{% endfor %}
</div>
</div>