#python #django #forms #one-to-many #django-comments
Вопрос:
Я не могу понять, почему результат моей формы обзора не отображается в шаблоне, хотя моя форма билета работает нормально. Тем не менее, я связал 2 модели с внешним ключом. Затем в шаблоне я добавил «ticket.id». Наконец, цель этого приложения состоит в том, чтобы ограничить обзор одним человеком. Заранее благодарю вас за вашу помощь.
Мои модели:
class Ticket(models.Model): title = models.CharField(max_length=128) content = models.TextField(max_length=2048, blank=True, null=True) image = models.ImageField(null=True, blank=True) user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) date_created = models.DateTimeField(auto_now_add=True) def __str__(self) : return self.title class Review(models.Model): ticket = models.ForeignKey(Ticket, related_name="reviews" ,on_delete=models.CASCADE) rating = models.PositiveIntegerField(validators=[MinValueValidator(0),MaxValueValidator(5)]) user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) headline = models.CharField(max_length=128) body = models.TextField(max_length=8192, blank=True, null=True) time_created = models.DateTimeField(auto_now_add=True) def __str__(self) : return self.ticket.title My forms : class TicketForm(forms.ModelForm): class Meta: model = models.Ticket fields = ['title', 'content','image'] class ReviewForm(forms.ModelForm): class Meta: model = models.Review fields = ['rating','headline','body']
Мое мнение :
@login_required def review(request, ticket_id): ticket = get_object_or_404(models.Ticket, id=ticket_id) review_form = forms.ReviewForm(instance=ticket) if request.method == 'POST': review_form = forms.ReviewForm(request.POST, instance=ticket) if review_form.is_valid(): review = review_form.save(commit=False) review.user = request.user review.save() return redirect('home') return render(request, 'flux/create_review_post.html', context={'review_form': review_form})
Мои URL-адреса:
path('home/', flux.views.home, name='home'), path('ticket/create/', flux.views.ticket, name='ticket_create'), path('flux/lt;int:ticket_idgt;/', flux.views.view_ticket, name='view_ticket'), path('lt;int:ticket_idgt;/review/create/', flux.views.review, name='review_create'),
Моя форма для просмотра шаблона:
lt;form method="post" gt; {{ review_form.as_p }} {% csrf_token %} lt;button class="btn btn-primary m-2 "
MY templat Html:
{% extends 'base.html' %} {% block content %} lt;a class="btn btn-dark m-2 " href="{% url 'ticket_create' %}"gt;Create a ticketlt;/agt; lt;h2 class="m-2"gt;Fluxlt;/h2gt; lt;div class="grid-container"gt; {% for ticket in tickets %} lt;a class="btn btn-warning m-2 " href="{% url 'view_ticket' ticket.id %}"gt;lt;/agt; lt;div class="post border border border-secondary rounded m-2"gt; lt;div class="d-flex flex-row"gt; lt;p class="p-2 h5 text-primary"gt;{{ ticket.user }}lt;/pgt; lt;p class="p-2 h5 text-primary"gt;{{ ticket.id }}lt;/pgt; lt;p class=" p-2 ms-auto"gt;{{ ticket.date_created }} lt;/pgt; lt;/divgt; lt;h4 class="p-2"gt;Ticket : {{ ticket.title }}lt;/h4gt; {% if ticket.image %} lt;img class="p-2" src="{{ ticket.image.url }}"gt; {% endif %} lt;a class="btn btn-dark m-2 " href="{% url 'review_create' ticket.id %}"gt;Create a reviewlt;/agt; lt;/divgt; {% endfor %} {% for review in reviews %} lt;p class="p-2 h5 text-warning"gt;{{ review.rating }}lt;/pgt; {% endfor %} lt;/divgt; {% endblock content %}