llxxxyyyyy 2022-12-25 21:52 采纳率: 100%
浏览 569
已结题

问题:Field 'id' expected a number but got ”“

问题遇到的现象和发生背景

在Django+mysql中,出现Field 'id' expected a number but got ''.

遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
views.py
def editb(request,a_id):
    s = models.Article.objects.filter(id=a_id).first()
    return render(request, "edit.html", {"post_lists": s})
#实现修改的视图函数
def do_edit(request):
    a_id = request.POST.get("id")
    a_ti = request.POST.get("title")
    a_cate = request.POST.get("category")
    a_data = request.POST.get("datatimefield")
    a_text = request.POST.get("textfield")
    models.Article.objects.filter(id=a_id).update(title=a_ti,category=a_cate,datatimefield=a_data,textfield=a_text)
    # stu = models.Stu.objects.raw("select * from stu")
    stu = models.Article.objects.all()
    return render(request,"detail.html",{'post_lists':stu})

** edit.html**

<body>
<section class="services-section"><a name="services"></a>
    <div class="wrapper">
        <h4>{{ request.session.username }}'s Blog</h4>
        <p class="subtitle">Django开发实战</p>
        <p class="subtitle">
            <a href="#">Add Article</a>
        </p>
        <p class="subtitle">
            <a href="#">Home</a>
        </p>
        <p class="subtitle">
            <a href="#">退出登录</a>
        </p>
    </div>
</section>
    <form action="/do_edit/" method="post">
        <input type="hidden" name="id" value="{{ article.id }}">
        <label>title:</label> <input type="text" name="title" value="{{ article.title }}">
        <label>category:</label> <input type="text" name="category" value="{{ article.category }}">
        <label>datatimefiled:</label> <input type="text" name="datatimefield" value="{{ article.datatimefield }}">
        <label>textfiled:</label> <textarea name="textfield" value="{{ article.textfield }}"></textarea>
        <input type="submit" value="EDIT" class="button-1">
    </form>

<div class="footer">

</div>

</body>
</html>


detail.html
<section class="features-section">
        <div class="wrapper">
            <ul class="feature-squares">

                <li>
                    <div class="image">
                        <img src="../static/images/icon-eye.png" alt="feature icon">
                    </div>
                    {% for post_obj in post_lists %}
                    <div class="text">
                        <h5>{{ post_obj.title}}</h5>
                        <h6>{{ post_obj.category }}</h6>
                        <h6>{{ post_obj.datatimefield }}</h6>
                        <h6>{{ post_obj.textfield}}</h6>
                    </div>
                        </li>
                <div id="clear"></div>
            </ul>
            <div class="edit_delete">
                <a href="{% url 'editb' post_obj.id %}">修改</a>
                <a href="#">删除</a>
            </div>
            {% endfor %}
        </div>
    </section>
    </div>

  path('det/',views.det,name="det"),
    re_path('edti(?P<a_id>\d+)/',views.editb,name='editb'),
    path('do_edit/',views.do_edit),

运行结果及详细报错内容

出现Field 'id' expected a number but got ''.以及不是打开一条出现MySQL的一条记录

img


错误:

img

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

想要问问两种情况的解答!

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 写回答

1条回答 默认 最新

  • heart_6662 2022-12-25 23:10
    关注

    在Django中,这种错误一般是由于你在使用某些数据库操作时,传入的参数类型不正确导致的。例如,如果你在调用Django的Model的save方法时,传入的参数是字符串类型,而不是数字类型,那么就会出现这种错误。

    为了解决这个问题,你可以检查你传入的参数是否为正确的类型,如果不是,可以使用相应的函数进行转换,例如使用int()函数将字符串转换为数字类型。

    例如,如果你在调用save方法时传入的参数是字符串类型,你可以使用以下代码来解决这个问题:

    model_obj.save(update_fields=['field_name'], id=int(id_str))
    
    

    在这里,我们使用了int()函数将id_str转换为数字类型,然后再传入save方法中。

    希望这些内容对你有帮助!有用的话可以给博主点解决问题啦!

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月14日
  • 专家已采纳回答 1月6日
  • 创建了问题 12月25日