如何解决django模型表单不保存数据
我想用Django创建一个待办事项应用程序。 我为列表模型创建了一个表单,但是当用户单击“提交”以提交列表时,该表单没有保存,为什么?
这是views.py 我已经创建了表单的实例并将其设置为用户字段,然后保存实例,但事实并非如此
def index(request):
if request.user.is_authenticated:
user_ = User.objects.get(username=request.user.username)
lists = user_.user.all()
form = listForm()
if request.method == "POST":
form = listForm(request.POST)
if form.is_valid():
instance = form.save(commit=False)
instance.user = request.user
instance.save()
return HttpResponseRedirect(reverse("index"))
context = {'lists':lists,'form':form}
return render(request,'todolists/index.html',context)
else:
return render(request,'todolists/login.html')
这是索引模板
{% extends "todolists/layout.html" %}
{% block body %}
{% if user.is_authenticated %}
<div class="center-column">
<form method="POST" action="{% url 'index' %}">
{% csrf_token %}
{{form.title}}
<input type="submit" class="btn btn-info">
</form>
<div class="todo-list">
{% for list in lists %}
<div class="item-row">
<a class="btn btn-sm btn-info" href="{% url 'update' list.id %}">update</a>
<a class="btn btn-sm btn-danger" href="{% url 'update' list.id %}">delete</a>
<span>{{list}}</span>
</div>
{% endfor %}
</div>
</div>
{% endif %}
{% endblock %}
这是urls.py
from django.urls import path
from .import views
urlpatterns = [
path('',views.index,name='index'),path('update/<str:id>/',views.update,name='update'),path("login",views.login_view,name="login"),path("logout",views.logout_view,name="logout"),path("register",views.register,name="register"),]
这是models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
class User(AbstractUser):
pass
class list(models.Model):
title = models.CharField(max_length=200)
finished = models.BooleanField(default=False)
timestamps = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(User,on_delete=models.CASCADE,related_name="user")
def __str__(self):
return self.title
这是表格代码
class listForm(forms.ModelForm):
title= forms.CharField(label=mark_safe("<span style='color:white;'>Title:</span>"),widget= forms.TextInput(attrs={'placeholder':'Add new task...','class':'form-control'}))
finished= forms.BooleanField(label=mark_safe("<span style='color:white;'>Finished:</span>"),widget= forms.CheckboxInput(attrs={'style':'width:25px;'}))
class Meta:
model = list
fields = '__all__'
解决方法
尝试将模板文件react-select
更新为AsyncSelect
,如django docs中所述,这里是link
如果只需要HTML中的loadWorkers(inputValue,callback) {
if (inputValue == null || inputValue.length < 3) { // not executing with less than 3 characters
callback([]);
return;
}
this.props.actions.getWorkersByName(inputValue,includeLeft).then(response => {
let workers = [];
if (response && !response.error)
workers = getResponseData(response);
else { // error,get data from global state.
workers = this.props.quickSearchResults;
}
callback(workers);
});
}
字段,请更新forms.py文件
{{ form.title }}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。