我有一个客户模型:
class Customer(models.Model):
Name = models.TextField(blank=False)
Surname = models.TextField(blank=False)
PhoneNumber = models.TextField()
Address = models.TextField()
SendSms = models.BooleanField(default=True)
SendEmail = models.BooleanField(default=True)
Email = models.TextField()
@classmethod
def create(cls, name, surname, phoneNumber, address , sendSms, sendEmail, email):
customer = cls(Name=name, Surname = surname, PhoneNumber = phoneNumber
, Address = address, SendSms = sendSms, SendEmail = sendEmail
, Email = email)
return customer
引用 this doc,这就是我创建新对象的方式。
我有一个用于创建新客户的表单。像这样工作:
class NewCustomer(View):
def get(self, request):
c = {}
c.update(csrf(request))
return render_to_response("Customer/NewCustomer.html", c)
def post(self, request):
customer = Customer.create(request.POST.get("name", ""), request.POST.get("surname", ""),
request.POST.get("PhoneNumber", ""), request.POST.get("Address", ""),
request.POST.get("SendSms", ""), request.POST.get("SendEmail", ""),
request.POST.get("Email", ""))
return HttpResponseRedirect("/Customers/",{"customerId":customer.id})
我有另一个 View 女巫列出所有客户,但我在该 View 中得到空数组。
def AllCustomers(request):
return render_to_response("Customer/AllCustomers.html", {"customers": Customer.objects.all()})
有人可以指出我在这里创建对象所缺少的吗?
请您参考如下方法:
您需要调用save method实际制作记录:
customer = cls(Name=name, Surname = surname, PhoneNumber = phoneNumber
,Address = address, SendSms = sendSms, SendEmail = sendEmail
,Email = email)
customer.save()
return customer
或者需要使用Model.objects.create(..):
customer = cls.objects.create(
Name=name, Surname = surname, PhoneNumber = phoneNumber
,Address = address, SendSms = sendSms, SendEmail = sendEmail
,Email = email)
return customer
