Django 编辑不';更新数据库

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

我正在尝试编辑保存在数据库中的一些信息

因此,我从readAllNew.html调用编辑按钮:

<!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)