django,什么问题? TypeError Comment()获得了意外的关键字参数'comment_text'

问题描述 投票:1回答:1
TypeError at /articles/1/leave_comment/
Comment() got an unexpected keyword argument 'comment_text'
Request Method: POST
Request URL:    http://127.0.0.1:8000/articles/1/leave_comment/
Django Version: 3.0.1
Exception Type: TypeError
Exception Value:    
Comment() got an unexpected keyword argument 'comment_text'
Exception Location: C:\Users\Dima\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\models\base.py in __init__, line 500
Python Executable:  C:\Users\Dima\AppData\Local\Programs\Python\Python38\python.exe

观看次数

from django.shortcuts import render

from .models import Article, Comment
from django.http import HttpResponseRedirect, Http404
from django.urls import reverse


def index(request):
    latest_articles_list = Article.objects.order_by('-pub_date')[:5]
    return render(request, 'articles/list.html', {'latest_articles_list': latest_articles_list})


def detail(request, article_id):
    try:
        a = Article.objects.get(id = article_id)
    except:
        raise Http404('Статья не найдена')
    return render(request, 'articles/detail.html', {'article': a})

def leave_comment(request, article_id):
    try:
        a = Article.objects.get(id = article_id)
    except:
        raise Http404('Статья не найдена')

    a.comment_set.create(author_name = request.POST['name'], comment_text = request.POST['text'])

    return HttpResponseRedirect( reverse('articles:detail', args(a.id,)) )

detail.html

{% extends 'base.html' %}

{% block title %}{{article.article_title}}{% endblock %}

{% block content %}

<h2>{{article.article_title}}</h2>
<p>{{article.article_text}}</p>

<em>{{article.pub_date}}</em>

<hr>

<form action="{% url 'articles:leave_comment' article.id %}" method="POST">
    {% csrf_token %}
    <input type="text" required placeholder="Ваше имя" name="name"><br>
    <textarea name="text" required="" placeholder="Текст комментария" cols="30" rows="10"></textarea></br>

    <button type="submit">Оставить комментарий</button>

</form>

{% endblock %}
python django
1个回答
-1
投票

如果您要添加评论,而不是:

a.comment_set.create(author_name = request.POST['name'], comment_text = request.POST['text'])

写此:

Comment.objects.create(article=a, author_name = request.POST['name'], comment_text = request.POST['text'])

EDIT:我也加入了article字段,因为@engin_ipek建议也创建ForeignKey关系

© www.soinside.com 2019 - 2024. All rights reserved.