Django 编辑不';更新数据库
我正在尝试编辑保存在数据库中的一些信息 因此,我从readAllNew.html调用编辑按钮:Django 编辑不';更新数据库,django,django-models,django-forms,django-templates,django-views,Django,Django Models,Django Forms,Django Templates,Django Views,我正在尝试编辑保存在数据库中的一些信息 因此,我从readAllNew.html调用编辑按钮: <!DOCTYPE html> <html> <head> <title></title> </head> <body> <table border="1"> <tr> <th>Naslov</th> <th
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<table border="1">
<tr>
<th>Naslov</th>
<th>Datum</th>
<th>Autor</th>
<th>Mail</th>
</tr>
{% for x in data %}
<tr>
<td>{{x.naslov}}</td>
<td>{{x.datumObjave}}</td>
<td>{{x.autor}}</td>
<td>{{x.email}}</td>
<td><a href="{% url 'delete' x.id %}">delete</a></td>
<td><a href="{% url 'edit' x.id %}">edit</a></td>
</tr>
{% endfor %}
</table>
</body>
</html>
我的模特
class Clanak(models.Model):
naslov = models.CharField(null=False, blank=True, max_length=120)
datumObjave = models.DateField(null=False, blank=False)
autor = models.CharField(null=False, blank=True, max_length=50)
email = models.EmailField(max_length=75, null=True, blank=True)
def __str__(self):
return str(self.naslov) + ', ' + str(self.datumObjave) + ', ' + str(self.autor)
My forms.py:
class ClanakForma(forms.ModelForm):
class Meta:
model = Clanak
fields = '__all__'
和我的“edit.html”:
它不编辑任何内容,而是向表中添加新行。
如果我将其保留为没有“data.save()”和那些行,但将“Commit”更改为“False”,则会发生同样的情况。您正在使用表单创建新的模型实例,而不是编辑现有的。将视图更改为:
def编辑(请求,id):
数据=获取对象或404(Clanak,id=id)
form=ClanakForma(request.POST或None,实例=data)
如果request.method==“POST”:
如果form.is_有效():
form.save()
返回重定向('readAllNew.html')
模板='edit.html'
上下文={'form':form}
返回呈现(请求、模板、上下文)
您的视图也存在一些问题,例如,如果表单无效,您将不会向用户返回任何响应。adddata.save(),然后按照@Gasanov的说明重定向。
此外,您的模型字段有一个单独的数据类型,您正试图将模型字段更新为request.user。
或者,使用@Gasanov所述的解决方案,或者您可以在分配时维护数据类型
您更新了问题:在使用post数据初始化表单时
form = ClanakForma(request.POST, instance=data)
请参阅:在
重定向之前添加数据.save()
请检查更新部分
class ClanakForma(forms.ModelForm):
class Meta:
model = Clanak
fields = '__all__'
<form method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
data.naslov = request.user
data.datumObjave = request.user
data.autor = request.user
data.email = request.user
form = ClanakForma(request.POST, instance=data)