无法编辑 django 中表中的数据



我一直收到此错误,我不知道为什么。谁能帮我?

错误:

NoReverseMatch at /item

反转为"edit_item_status",参数"('lll111',("未找到。 尝试了 1 种模式: ['项目/edit_item/(?P\d+($']

models.py

class item_status(models.Model):
item_code=models.CharField(max_length=30,unique=True,primary_key=True,blank=False)
item_name=models.CharField(max_length=50,blank=True)
type= models.CharField(max_length=100,blank=True)  
price=models.IntegerField()
choices =({'AVAILABLE','Item ready to be purchased'},{'SOLD','Item Sold'},{'RESTOCKING','Item restocking in few days'})
status=models.CharField(max_length=50,choices=choices,default="AVAILABLE") #Available,Sold, Restocking
item_quantity_available=models.IntegerField()
issues=models.CharField(max_length=100,default="No issues")

views.py

def edit_item(request, pk, model, cls):
item = get_object_or_404(model, pk=pk)
if request.method == "POST":
form = cls(request.POST, instance=item)
if form.is_valid():
form.save()
return redirect('index')
else:
form = cls(instance=item)
return render(request, 'inv/edit_item.html', {'form': form})

def edit_item_status(request, pk):
return edit_item(request, pk, item_status, item_statusForm)

forms.py

class item_statusForm(forms.ModelForm):
class Meta:
model = item_status
fields = ('item_code', 'item_name', 'type', 'price','status','item_quantity_available','issues',)

urls.py

url(r'^item/edit_item/(?P<pk>d+)$', edit_item_status, name="edit_item_status"),

索引.html

{% for item in items1%}
<tr>
<td>{{ item.item_code }}</td>
<td>{{ item.item_name }}</td>
<td>{{ item.type }}</td>
<td>{{ item.price}}</td>
<td>{{ item.status}}</td>
<td>{{ item.item_quantity_available}}</td>
<td>{{ item.issues}}</td>
td>
<a href="{% url 'edit_item_status' item.item_code %}" class="btn btn-warning btn-sm" role="button" aria-pressed="true" > Edit</a>
<a href="{% url 'delete_item_status' item.item_code %}" class="btn btn-danger btn-sm" role="button" aria-pressed="true" > x</a>
</td>
</tr>
{% endfor %}

但是,此代码适用于使用整数主键的其他类。 我不知道为什么和 我现在完全迷失了。

据我从您的模板中看到,您的代码状态

<a href="{% url 'edit_supplier' item.item_code %}" class="btn btn-warning btn-sm" role="button" aria-pressed="true" > Edit</a>

你想转到一个名为edit_supplier的视图并传递 PK。 但是,您没有这样的看法。您只有:def edit_item(request, pk, model, cls):def edit_item_status(request, pk):

但是 url 正在寻找一个端点edit_supplier。

你应该有一个这样的网址:

url(r'^item/edit_supplier/(?P<pk>d+)$', edit_supplier, name="edit_supplier"),

或者如果你想使用def edit_item_status(request, pk):要处理编辑,请在您的模板中执行此操作:

<a href="{% url 'edit_item_status' item.item_code %}" class="btn btn-warning btn-sm" role="button" aria-pressed="true" > Edit</a>

最新更新