【问题标题】:Cannot edit data from a table in django无法从 django 中的表中编辑数据
【发布时间】:2020-06-09 12:35:42
【问题描述】:

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

错误:

NoReverseMatch at /item

未找到带有参数“('llll111',)' 的“edit_item_status”的反向操作。尝试了 1 种模式:['item/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"),

index.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 %}

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

【问题讨论】:

  • Django 无法将查询路径“edit_supplier”与 urls.py 中的条目匹配。另请注意,正则表达式 (?P&lt;pk&gt;\d+) 需要一个数字。
  • NoReverseMatch at /item Reverse for 'edit_item_status' with arguments '('llll111',)' 未找到。尝试了 1 种模式:['item/edit_item/(?P\\d+)$'] 这实际上也是我尝试在另一张桌子上使用的错误。您对如何从 url 传递 char 类型有任何想法吗?

标签: python django django-models django-views django-templates


【解决方案1】:

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

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

你想去一个名为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): 要在您的模板中处理编辑,请执行以下操作:

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

【讨论】:

  • 对不起,我复制了错误的代码部分,实际上是 Edit 它也不起作用,因为我传入的是 Char 类型的主键。
猜你喜欢
  • 1970-01-01
  • 2019-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多