Привет, я делаю проект автосалона в django, и я хотел бы иметь возможность создавать обзор автомобиля так же, как можно создать комментарий к записи в приложении блога или социальной сети. сайт. В моем случае родительский объект - это автомобиль, а связанный объект - обзор. Идеальным результатом было бы, если бы кто-то нажал на отзыв об автомобиле и веб-приложении, чтобы узнать, какой автомобиль я рассматриваю. Это то, что я пробовал до сих пор
автомобиль Models.py
from django.db import models
from django.urls import reverse
from categories.models import Category
# Create your models here.
class Car(models.Model):
image = models.ImageField(upload_to='images/cars/')
make = models.CharField(null=False, blank=False, max_length=30)
model = models.CharField(null=False, blank=False, max_length=30)
year = models.IntegerField(null=False, blank=False)
transmission = models.CharField(null=False, blank=False, max_length=30)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
def __str__(self):
return self.model
def get_absolute_url(self):
return reverse('car_detail', args=[str(self.id)])
обзор автомобиля models.py
from django.db import models
from django.urls import reverse
from users.models import CustomUser
from cars.models import Car
# Create your models here.
class Review(models.Model):
title = models.CharField(max_length=20)
description = models.TextField(max_length=160)
date_added = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
car = models.ForeignKey(Car, on_delete=models.CASCADE)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('review_detail', args=[str(self.id)])
просмотров автомобилей
from django.shortcuts import render
from django.views.generic import ListView, DetailView
from .models import Car
# Create your views here.
class CarListView(ListView):
model = Car
template_name = 'car_list.html'
class CarDetailView(DetailView):
model = Car
template_name = 'car_detail.html'
просмотров обзоров автомобилей
from django.urls import reverse_lazy
from django.views.generic import (
CreateView,
DetailView,
UpdateView,
DeleteView
)
from .models import Review
# Create your views here.
class ReviewCreateView(CreateView):
model = Review
fields = ('title', 'description', )
template_name = 'review_create.html'
def form_valid(self, form):
form.instance.user = self.request.user
form.instance.car = self.request.car.id
return super().form_valid(form)
urls.py
from django.urls import path
from .views import CarDetailView, CarListView
from car_reviews.views import ReviewCreateView
urlpatterns = [
path('cars/', CarListView.as_view(), name='car_list'),
path('cars/<int:pk>', CarDetailView.as_view(), name='car_detail'),
path('cars/<int:pk>/review/create/',
ReviewCreateView.as_view(), name='car_review_create')
]
шаблон сведений об автомобиле, где кнопка обзора доступна
{% extends 'base.html' %}
{% block content %}
<section style=" margin-top:100px; margin-bottom: 140px;">
<div class="container" style="margin-left: 150px;">
<div class="row">
<div class="card mb-3 " style="">
<div class="row no-gutters">
<div class="col-md-8">
<img src="{{ car.image.url }}" class="card-img" alt="...">
</div>
<div class="col-md-4">
<div class="card-body">
<h5 class="card-title"> {{ car.make }} {{ car.model }}</h5>
<p class="card-text">Year: {{ car.year }}</p>
<p class="card-text">Transmission: {{ car.transmission }}</p>
<p class="card-text"><small class="text-muted">Category: {{ car.category }}</small></p>
<a class="btn btn-primary" href="{% url 'car_review_create' car.id %}">Add Review</a>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
{% endblock %}
на данный момент с моим текущим кодом i получить ошибку атрибута запроса wsgi, когда я попытался получить вышеуказанную желаемую функциональность, используя метод form_valid ()