Skip to main content
 首页 » 编程设计

python之无法创建 Django 模型的新实例

2024年08月26日27qq号

我有一个客户模型:

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