Ошибка значения в / blog / addblog

#python #django

#python #django

Вопрос:

Я пытаюсь реализовать раздел «Добавить сообщение» на своем веб-сайте, где пользователь может добавить свой блог. страница выглядит следующим образом:

введите описание изображения здесь

но когда я пытаюсь опубликовать, нажав кнопку опубликовать, я получаю эту ошибку:

 ValueError at /blog/addblog
Field 'sno' expected a number but got 'blog title'.
Request Method: POST
Request URL:    http://127.0.0.1:8000/blog/addblog
Django Version: 3.1
Exception Type: ValueError
Exception Value:    
Field 'sno' expected a number but got 'blog title'.
Exception Location: C:Usersjayant nigamprojectspractiselibsite-packagesdjangodbmodelsfields__init__.py, line 1776, in get_prep_value
Python Executable:  C:Usersjayant nigamprojectspractiseScriptspython.exe
Python Version: 3.8.5
Python Path:    
['C:\Users\jayant nigam\projects\everythingcs',
 'C:\Python38\python38.zip',
 'C:\Python38\DLLs',
 'C:\Python38\lib',
 'C:\Python38',
 'C:\Users\jayant nigam\projects\practise',
 'C:\Users\jayant nigam\projects\practise\lib\site-packages']
Server time:    Sat, 24 Oct 2020 15:17:48  0530
  

блог models.py:

 class Post(models.Model):
    sno = models.AutoField(primary_key=True)
    title = models.CharField(max_length=50)
    content = RichTextField(blank=True, null=True)
    # content = models.TextField()
    author = models.CharField(max_length=50)
    slug = models.SlugField(max_length=200)
    timeStamp = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['-timeStamp']

    def __str__(self):
        return self.title   " by "   self.author
  

views.py

 def addblog(request):
  
    if request.method == 'POST':
        title = request.POST.get('title')
        content = request.POST.get('content')
        author = request.POST.get('author')
        slug = request.POST.get('slug')
        blog = Post(title, content, author, slug)
        blog.save()
    return render(request, 'blog/add_post.html')
  

add_post.html

 {% extends 'base.html' %}
{% block title %}
add post
{% endblock title %}

{% block body %}
<div class="container my-3">
    <form action = "{% url 'addblog' %}" method="post">

        <div class="form-group">
            <label for="title" id="Title">Title</label>
            <input type="text" class="form-control" id="title" name="title"/>
            
        </div>
        {% csrf_token %}
        <div class="form-group">
            <label for="content" id="content">Content</label>
            <textarea name="content" type='text' class="form-control" cols="10" rows="10"></textarea>
        </div>

        <div class="form-group">
            <label for="author" id="author">Author</label>
            <input type="author" class="form-control" name="author"/>
        </div>

        <button type="submit" class="btn btn-primary my-1" id='contact-button'>Post</button>
    </form>
</div>
{% endblock body %}
  

Я предполагаю sno , что причиной ошибки является поле, но я не могу его исправить,
также в журнале ошибок я получаю выделенную строку как blog.save()

Комментарии:

1. Пара советов: избегайте создания собственного поля pk, если у вас нет веской причины (изменение имени не является веской причиной). Затем используйте аргументы ключевого слова при создании экземпляра экземпляра модели: Post(title=title, content=content, ...) . Это не оставляет места для двусмысленности и предположений о порядке позиционных аргументов.

2. спасибо, приятель, теперь он работает, просто набрал этот пост (title = заголовок, content = содержимое, …), и это сработало …!