在Django+mysql中,出现Field 'id' expected a number but got ''.
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 Blogh4>
<p class="subtitle">Django开发实战p>
<p class="subtitle">
<a href="#">Add Articlea>
p>
<p class="subtitle">
<a href="#">Homea>
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\d+)/' ,views.editb,name='editb'),
path('do_edit/',views.do_edit),
出现Field 'id' expected a number but got ''.以及不是打开一条出现MySQL的一条记录
想要问问两种情况的解答!
在Django中,这种错误一般是由于你在使用某些数据库操作时,传入的参数类型不正确导致的。例如,如果你在调用Django的Model的save方法时,传入的参数是字符串类型,而不是数字类型,那么就会出现这种错误。
为了解决这个问题,你可以检查你传入的参数是否为正确的类型,如果不是,可以使用相应的函数进行转换,例如使用int()函数将字符串转换为数字类型。
例如,如果你在调用save方法时传入的参数是字符串类型,你可以使用以下代码来解决这个问题:
model_obj.save(update_fields=['field_name'], id=int(id_str))
在这里,我们使用了int()函数将id_str转换为数字类型,然后再传入save方法中。
希望这些内容对你有帮助!有用的话可以给博主点解决问题啦!