думал, что я создам веб-сайт, где люди смогут загружать шутки и комментировать разные, пока что c функционирует.
Единственная проблема, с которой я сталкиваюсь, - это когда я создаю комментарий, я не могу автоматически назначить его шутке, мне нужно вручную выбрать шутку, которую я хочу прокомментировать, как мне сделать это, используя текущий отношения многие к одному, которые у меня есть сейчас.
Текущие мысли ...
Используйте это из модели шуток, которую я раздаю в URL, чтобы выбрать шутку и назначить комментарий таким образом (не уверен, как это сделать)
Вот мои модели:
from django.db import models
from django.utils import timezone
from django.urls import reverse
class JokeListItem(models.Model):
title = models.CharField(max_length=100, null=True)
content = models.TextField(null=True)
date_posted = models.DateTimeField(null=True, default=timezone.now)
comment = models.CharField(max_length=100,null=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('joke-home')
class Comment(models.Model):
content = models.CharField(max_length=100,null=True, blank=True)
joke = models.ForeignKey(JokeListItem, blank=True, null=True, on_delete=models.CASCADE,related_name='comments')
def __str__(self):
return self.content
def get_absolute_url(self):
return reverse('joke-home')
Вот мои взгляды:
from django.shortcuts import render
from .models import JokeListItem, Comment
from django.views.generic import CreateView, DeleteView, DetailView, UpdateView
from django.shortcuts import get_object_or_404
# Create your views here.
def home(request):
all_joke_items = JokeListItem.objects.all()
return render(request, 'website/home.html', {'jokes': all_joke_items})
class addJoke(CreateView):
model = JokeListItem
fields = [
'title',
'content',
'date_posted',
'content'
]
class postDetail(DetailView):
template_name = 'website/jokelistitem_detail.html'
model = JokeListItem
class postDeleteJoke(DeleteView):
model = JokeListItem
success_url = '/home'
class postUpdateJoke(UpdateView):
model = JokeListItem
fields = [
'title', 'content'
]
class postCommentJoke(CreateView):
template_name = "website/comments_form.html"
model = Comment
fields = [
'content'
]
def form_valid(self, form):
joke = get_object_or_404(JokeListItem, slug=self.kwargs[''])
form.instance.joke = joke
return
Вот мои URL:
jokeweb URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/3.0/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
from django.contrib import admin
from django.urls import path
from website.views import home, addJoke, postUpdateJoke, postDetail, postDeleteJoke, postCommentJoke
urlpatterns = [
path('admin/', admin.site.urls),
path('home/', home, name='joke-home'),
path('new-joke/', addJoke.as_view(), name='joke-create'),
path('post/<int:pk>/', postDetail.as_view(), name='joke-detail'),
path('post/<int:pk>/comment/', postCommentJoke.as_view(), name='joke-comment'),
path('post/<int:pk>/delete/', postDeleteJoke.as_view(), name='joke-delete'),
path('post/<int:pk>/update/', postUpdateJoke.as_view(), name='joke-update'),
]