社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

如何在django中使用model form编辑对象?

Mowli • 4 年前 • 1032 次点击  

这可能是 this 回答。目前,我正在使用用于创建对象的相同模型表单更新对象。

我的 views.py 看起来像:(从答案看):

def newpost(request):
    form = PostForm(request.POST)
    if request.method == "POST":
        if form.is_valid():
            obj = form.save(commit=False)
            obj.save()
            return redirect('newpost')
    return render(request, 'console/newpost.html', {'form':form})

def editpost(request, pk):
    obj = Post.objects.get(id=pk)
    form = PostForm(instance=obj)
    if request.method == "POST":
        if form.is_valid():
            obj = form.save(commit=False)
            obj.save()
            return redirect('editpost')
    return render(request, 'console/editpost.html', {'form':form})

我的html表单 editpost 看起来像:

<form method="POST" action="{% url 'newpost' %}">
    {% csrf_token %}
    {{form.as_p}}
    <button type="submit"> Submit</button>
</form>

还有我的 urls.py 看起来像:

path('console/post/', c_views.newpost, name='newpost'),
path('console/post/<int:pk>/', c_views.editpost, name='editpost'),

上面的代码工作得很好,但是创建了一个新的实例,对象的数据取自pk。

我加了一个 obj.delete() 这样的代码:

def editpost(request, pk):
    obj = Post.objects.get(id=pk)
    form = PostForm(instance=obj)
    obj.delete()
    if request.method == "POST":
        if form.is_valid():
            obj = form.save(commit=False)
            obj.save()
            return redirect('editpost')
    return render(request, 'console/editpost.html', {'form':form})

这段代码给了我想要的东西,但我知道这不是一个好的做法。我的问题是,这是一个正确的方式还是我落后了。 我知道我的行为 编辑帖子 html不应该是 {% url 'newpost' %} ,但如果我使用 {% url 'editpost' %} 我不知道如何在url标记中传递pk值。有人能告诉我正确的方法吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52076
 
1032 次点击  
文章 [ 1 ]  |  最新文章 4 年前