Я не могу добраться до одного параметра(m2m) из моих моделей Django
Я создал представление, в котором я добавляю остановки к маршруту, оно работает нормально, но остановки не отображаются по порядку, когда я их добавляю, и я понятия не имею почему. Пожалуйста, подскажите, где я допускаю ошибку
Вот мой код:
Модели:
#not important
class Port(models.Model):
class Route(models.Model):
name = models.CharField(max_length=128, default='')
user = models.ForeignKey(User, on_delete=models.CASCADE)
stop_list = models.ManyToManyField(Port, through='RoutePort')
def __str__(self):
return f'{self.name}'
class RoutePort(models.Model):
port = models.ForeignKey(Port, on_delete=models.CASCADE)
route = models.ForeignKey(Route, on_delete=models.CASCADE)
order = models.PositiveIntegerField()
class Meta:
ordering = ['order']
порядок, в котором они должны появляться, задается параметром 'order' из класса routeport
Форма:
class AddRoutePort(forms.ModelForm):
class Meta:
model = RoutePort
fields = ['port', 'order']
форма короткая, и я не знаю, не забыл ли я там что-нибудь
View, get работает правильно, post работает почти нормально. Новые порты корректно добавляются в новый маршрут из списка, но они появляются в порядке добавления, а не так, как я хотел.
class RouteCorrectView(View):
def get(self, request, pk):
route = Route.objects.get(pk=pk)
form = AddRoutePort()
return render(request, 'route_correct.html', {'route':route, 'form':form})
def post(self, request, pk):
route = Route.objects.get(pk=pk)
form = AddRoutePort(request.POST)
if form.is_valid():
to_port = form.save(commit=False)
to_port.route = route
order = to_port.order
ordering = RoutePort.objects.filter(order__gte=order, route=route)
for port in ordering:
port.order += 1
port.save()
to_port.save()
return redirect('route_correct', pk)
return render(request, 'route_correct.html', {'route':route, 'form':form})
и HTML - я не могу нарисовать здесь установленный порядок, поэтому я думаю, что где-то ранее была допущена ошибка. Строка {{ stops.order }} ничего не делает, так что почти уверен, что ошибка в форме или модели, но я не знаю где
{% extends 'base.html' %}
{% block content %}
<div class="card">
<ul>Nazwa</ul>
<p>{{ route.name }}</p>
<ul>Twórca</ul>
<p> {{ route.user }}</p>
<ul>Szlak</ul>
<td> {% for stops in route.stop_list.all %}
{{ stops }}
{{ stops.order }} # <- this is not working at all
{% empty %}
Szlak jest jeszcze pusty
{% endfor %}</td>
</div>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<input type="submit">
</form>
</div>
{% endblock %}