python - 视图中出现多个错误,编辑模型列表
问题描述
我正在尝试查看和编辑我的客户模型-
我正在做的是当您第一次打开服务器时,客户列表会作为链接打开。就像我按下假设客户 1 一样。
一旦我进行更改并按下保存按钮,表格就会显示得很好,它给了我错误-
Page not found (404)
Request Method: POST
Request URL: http://127.0.0.1:8000/marketing/editcustomer/2250a9b1-5d25-4bce-b426-e3a4abb45abb/POST
我也有后退按钮 - 按后退按钮后我也遇到同样的错误!
然后,如果我返回customerlist(seecustomer)
并再次单击同一客户或任何其他客户,则会出现以下错误-
Manager isn't accessible via customer instances
有时它也会给 -
First argument to get_object_or_404() must be a Model, Manager, or QuerySet, not 'customer'.
我的模型.py
class customer(models.Model):
customerid=models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
customername=models.CharField(max_length=1000)
我的意见.py
def editcustomer(request,customer_pk):
global customer
customer=get_object_or_404(customer,pk=customer_pk,user=request.user)
if request.method=='GET':
form=createcustomerform(instance=customer)
return render(request,'marketing/editcustomer.html',{'customer':customer,'form':form})
else:
try:
form=createcustomerform(request.POST,instance=customer)
form.save()
return redirect('seecustomer')
except ValueError:
return render(request,'marketing/editcustomer.html',{'customer':customer,'form':form,'error':'Incorrect entry'})
我的html表单代码-
<form action="POST" method="POST">
{% csrf_token %}
<div id="customername"> <span><label for="customername">Company Name</label></span>
<input type="text" id="customername" name="customername" placeholder="Enter Company's Full name" value="{{ customer.customername}}"> </div>
<button class="btn btn-primary btn-md" type="submit">Save</button>
<br>
<input type="button" class="btn btn-primary btn-md" value="Go Back" onclick="history.back(-1)" />
</form>
解决方案
发生这种情况的原因是因为在第一次get_object_or_404
调用之后,customer
是一个customer
对象,不再是类。
例如,您可以使用大写字母导入模型:
from app.models import customer as Customer
def editcustomer(request,customer_pk):
customer=get_object_or_404(Customer,pk=customer_pk,user=request.user)
if request.method=='GET':
form=createcustomerform(instance=customer)
return render(request,'marketing/editcustomer.html',{'customer':customer,'form':form})
else:
try:
form=createcustomerform(request.POST,instance=customer)
form.save()
return redirect('seecustomer')
except ValueError:
return render(request,'marketing/editcustomer.html',{'customer':customer,'form':form,'error':'Incorrect entry'})
所以在这里我们删除global
部分,并使用 alias Customer
。话虽如此,我强烈建议使用PEP-8 样式指南,因此将类的名称写在PerlCase
,而不是. 在这种情况下,您可以简单地使用以下命令导入它:snake_case
from app.models import Customer
def editcustomer(request,customer_pk):
customer=get_object_or_404(Customer,pk=customer_pk,user=request.user)
if request.method=='GET':
form=createcustomerform(instance=customer)
return render(request,'marketing/editcustomer.html',{'customer':customer,'form':form})
else:
try:
form=createcustomerform(request.POST,instance=customer)
form.save()
return redirect('seecustomer')
except ValueError:
return render(request,'marketing/editcustomer.html',{'customer':customer,'form':form,'error':'Incorrect entry'})
推荐阅读
- vim - 将 Vim 的语言特定设置放在哪里?
- c# - ReSharper 以错误的方式检测到“表达式始终为真”
- c# - EF 核心 ThenInclude Select 说“在 Include 中使用的 Lambda 表达式无效”
- javascript - 如果您不知道密钥,如何检查 JSON 密钥的值是否为数组
- excel - 根据字符限制将文本截断为完整的单词 - Excel
- javascript - 如何计算 JavaScript 中对象数组中值的总和?
- powershell - 如何在 PowerShell(温度)中从此 WMIObject 返回单个整数
- asp.net-core - 如何加入具有相同 ID 的列
- java - 在 Spring Boot 中扩展 Mongo 默认配置
- sql - 将数字转换为 HH24:Mi:SS 其中 Mi:SS 是连接字符串