gpt4 book ai didi

django - 编辑 Django 表单中的现有条目

转载 作者:行者123 更新时间:2023-12-02 01:07:00 27 4
gpt4 key购买 nike

我的问题类似于how to edit model data using django forms ,但我无法解决它。我想获得一个带有预填字段的表单并允许用户编辑它们。我相信我的问题出在 views.py 文件中,但不幸的是我无法解决它。

模型.py

from django.db import models

class Item(models.Model):
product = models.CharField(max_length=150)
quantity = models.DecimalField(max_digits=8, decimal_places=3)
price = models.DecimalField(max_digits=7, decimal_places=2)
purchase_date = models.DateTimeField()
warranty = models.DecimalField(max_digits=4, decimal_places=1)
comment = models.TextField()

表单.py

from django import forms 
from items.models import Item

class EditItemForm(forms.ModelForm):
class Meta:
model = Item
fields = ('product','quantity', 'price', 'purchase_date', 'warranty', 'comment')

urls.py

from django.conf.urls import patterns, include, url 

urlpatterns = patterns('',
url(r'^show_all/$', 'items.views.items'),
url(r'^(?P<item_id>\d+)/$', 'items.views.item'),
url(r'^edit/(?P<item_id>\d+)/$', 'items.views.edit'),
)

edit.html

<form action="/items/edit/" method="post" class="form horizontal well">{% csrf_token %}
{{ form.as_p }}
<imput type="submit" class="btn btn-inverse" value="Aktualizuj">
</form>

views.py

from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from items.models import Item
from decimal import Decimal
from django.core.context_processors import csrf
from items.forms import EditItemForm
def edit(request):
if request.method == 'POST':
form = EditItemForm(request.POST, instance=request.item)
if form.is_valid():
form.save()
return HttpResponseRedirect('/items/show_all/')

else:
form = EditItemForm(instance=item)

args = {}
args.update(csrf(request))
args['form'] = form

return render_to_response('edit.html', args)

以上代码产生了这条信息:

TypeError at /items/edit/1/

edit() got an unexpected keyword argument 'item_id'

你能帮帮我吗?

Django 1.6、Python 3.4

最佳答案

您想象过一个名为 request.item 的属性。没有这样的事情。您需要通过传递到函数中的 ID 从数据库中获取项目,如 alecxe 所示。

def edit(request, item_id):
item = Item.objects.get(pk=item_id)
if request.method == 'POST':
form = EditItemForm(request.POST, instance=item)

关于django - 编辑 Django 表单中的现有条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24109286/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com