Ошибка типа / невозможно распаковать неитерируемый объект NoneType (Django) ⇐ Python

Программы на Python
Anonymous
Ошибка типа / невозможно распаковать неитерируемый объект NoneType (Django)

Сообщение Anonymous »

Я пытаюсь настроить в своем проекте Django систему, в которой пользователи смогут комментировать отдельные сообщения на главной (индексной) странице. Однако у меня возникла проблема при попытке сделать так, чтобы комментарий автоматически связывался с сообщением.
Это код, который я пробовал в view.py:
from django.core import paginator
from django.shortcuts import render, redirect, get_object_or_404
from django.http import HttpResponse
from .models import *
from django.views.generic import ListView, CreateView, UpdateView
from django.views.generic.detail import DetailView
from .forms import *
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import login
from django.core.paginator import Paginator
from django.views import View
import random

def index(request, pk=None, *args, **kwargs):
postdata = Post_Data.objects.all()
profiledata = ProfileData.objects.all()
likedata = Like.objects.all()
dislikedata = Dislike.objects.all()
comment = PostComment.objects.all()
postid = Post_Data.objects.get(pk)

# Initialize the comment form
if request.method == 'POST':
comment_form = PostCommentForm(request.POST)
if comment_form.is_valid():
post = comment_form.save(commit=False)
post.user = request.user
post.save()
return redirect('/')
else:
comment_form = PostCommentForm() # Create an empty form

# Pass the comment form to the template context
return render(request, 'index.html', {
'title': 'RoamTrip',
'postdata': postdata,
'profiledata': profiledata,
'likedata': likedata,
'dislikedata': dislikedata,
'comment': comment,
'comment_form': comment_form # Make sure this is included
})

models.py:
from django.contrib import admin
from django.db import models
from django.urls import reverse
from django.contrib.auth.models import User
from django.contrib.auth import get_user_model
from django.conf import settings
from .validators import validate_file_extension

# Create your models here.

class Post_Data (models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE, # Set the appropriate behavior here
null=True
)
time_data = models.DateTimeField(help_text='Enter Time of Upload Here:', auto_now_add=True)
text_data = models.TextField(help_text='Type Here:')
image_data = models.ImageField(upload_to="website/media/", null=True, blank=True, help_text='Upload Image:')
video_data = models.FileField(null=True, upload_to="website/media/", blank=True, validators=[validate_file_extension])
public_data = models.BooleanField(help_text='Public?', null=True)
approval = models.BooleanField(help_text='Is this post approved?', default=True)

class PostComment(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Post_Data, on_delete=models.CASCADE, related_name='post_comment_id')
post_comment = models.CharField(max_length=500)
timestamp = models.DateTimeField(auto_now_add=True)

def __str__(self):
return f"Comment by {self.user} on {self.post}"

urls.py:
urlpatterns = [
path('', views.index, name='RoamTrip'),
]

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

В результате я получил эту ошибку:
TypeError: невозможно распаковать неитерируемый объект NoneType
Отредактируйте, чтобы включить трассировку стека:
Internal Server Error: /
Traceback (most recent call last):
File "C:\Users\baran\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\baran\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\baran\Documents\Project RoamTrip\RoamTrip\website\views.py", line 20, in index
postid = Post_Data.objects.get(pk)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\baran\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\baran\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\query.py", line 633, in get
clone = self._chain() if self.query.combinator else self.filter(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\baran\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\query.py", line 1476, in filter
return self._filter_or_exclude(False, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\baran\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\query.py", line 1494, in _filter_or_exclude
clone._filter_or_exclude_inplace(negate, args, kwargs)
File "C:\Users\baran\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\query.py", line 1501, in _filter_or_exclude_inplace
self._query.add_q(Q(*args, **kwargs))
File "C:\Users\baran\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\sql\query.py", line 1600, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\baran\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\sql\query.py", line 1632, in _add_q
child_clause, needed_inner = self.build_filter(
^^^^^^^^^^^^^^^^^^
File "C:\Users\baran\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\db\models\sql\query.py", line 1479, in build_filter
arg, value = filter_expr
^^^^^^^^^^
TypeError: cannot unpack non-iterable NoneType object


Подробнее здесь: https://stackoverflow.com/questions/790 ... ect-django

Вернуться в «Python»