Соединение "один ко многим" не может настроить переход по первичному ключу

У меня есть страница с марками автомобилей, и мне нужно, чтобы при нажатии на марку я перенаправлялся на страницу со всеми автомобилями этой марки. По какой-то причине я не могу получить доступ к тому, что мне нужно в теге 'a'.

class Marks(models.Model): // MODELS
   mark = models.CharField(max_length=64)
   def __str__(self):
       return self.mark

class Cars(models.Model):
    CarName = models.CharField(max_length=64)
    mark = models.ForeignKey(Marks, on_delete=models.CASCADE)
    def __str__(self):
        return self.CarName



def marks_list(request): // VIEWS
   marks = Marks.objects.all()
   return render(request, 'cars.html', {'marks':marks})

def specific_car(request, pk):
    Car = Cars.objects.get(id=pk)
    return render(request, 'car_detail.html', {'cars': Car})




    urlpatterns = [
   path('marks/', marks_list), // urls
   path('admin/', admin.site.urls),
   path('marks/<pk>', specific_car)
]





{% for mark in marks %} // cars.html
<div>
    <a href="{{mark.cars}}">
        {{mark.mark}}</a>
</div>
{% endfor %}

При нажатии на тег 'a' в файле cars.html мне нужно получить файл car_detail.html с названиями автомобилей. Как я должен написать путь к 'mark_id'? Структура приложения

Таблица на основе класса Cars

В вашем шаблоне переменная mark.cars в настоящее время не определена. Чтобы использовать ее, вы должны добавить related_name="cars" к определению поля ForeignKey в вашем классе Cars:

class Cars(models.Model):
    # ...
    mark = models.ForeignKey(Marks, on_delete=models.CASCADE, related_name="cars")
    # ...

Альтернативно, вы можете ссылаться на mark.cars_set в вашем шаблоне, так как cars_set будет по умолчанию для related_name, выбранного Django.

В официальной документации есть довольно хорошее объяснение и примеры того, что именно происходит: Link

Вернуться на верх