【问题标题】:save() missing 1 required positional argument 'self'save() 缺少 1 个必需的位置参数“self”
【发布时间】:2020-07-04 14:46:33
【问题描述】:
This is view:


def add_bus_save(request):
if request.method=="POST":
    Type=request.POST.get("Type")
    Number_of_Seats=request.POST.get("Number_of_Seats")
    driver=request.POST.get("driver")
    hostess=request.POST.get("hostess")
    manager_id=request.POST.get("manager_id")
    staff_id=request.POST.get("staff_id")
    if driver.isalpha()==False:
        messages.error(request, 'Enter name of valid alphabets')
        return redirect('add_bus')
    elif hostess.isalpha()==False:
        messages.error(request, 'Enter name of valid alphabets')
        return redirect('add_bus')
    else:
        try:
            bus.Type=Type
            bus.Number_of_Seats=Number_of_Seats
            bus.driver=driver
            bus.hostess=hostess
            manager_obj1=Manager.objects.get(id=manager_id)
            bus.manager_id=manager_obj1
            staff_obj1=Staff.objects.get(id=staff_id)
            bus.staff_id=staff_obj1
            bus.save()    #Error
            messages.success(request,"Successfully Added Bus")
            return HttpResponseRedirect(reverse("add_bus"))
        
        except:
            messages.error(request,"Failed to Add Bus")
            return HttpResponseRedirect(reverse("add_bus"))
else:
    return render(request, 'add_bus.html')

这里的 Bus 表是在 model.py 文件中定义的:

class Bus(models.Model):
id=models.AutoField(primary_key=True)
manager=models.ForeignKey(Manager,on_delete=models.CASCADE,null=True )
staff=models.ForeignKey(Staff,on_delete=models.CASCADE, null=True )
created_at=models.DateTimeField(auto_now_add=True)
updated_at=models.DateTimeField(auto_now_add=True)
Type=models.TextField()
Number_of_Seats=models.IntegerField()
driver=models.CharField(max_length=255)
hostess=models.CharField(max_length=255)
objects=models.Manager()

我想把bus.save()保存到mysql,但是bus.save()上报错,TypeError: save() missing 1 required positional argument: 'self',应该怎么解决? 我正在尝试通过 form.py 将数据保存在总线中,但保存时出错:

bus.Type=Type
bus.Number_of_Seats=Number_of_Seats
bus.driver=driver
bus.hostess=hostess
manager_obj1=Manager.objects.get(id=manager_id)
bus.manager_id=manager_obj1
staff_obj1=Staff.objects.get(id=staff_id)
bus.staff_id=staff_obj1
bus.save()    #Error

【问题讨论】:

  • 您好,能否简化一下代码,让我们更容易理解?现在,有很多与错误本身无关的东西:)
  • 另外,你能提供一些关于什么是'bus'的信息吗?比如你在哪里定义了类(保存函数)等等。

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


【解决方案1】:

为了保存一个新对象,你首先必须实例化一个。然后你可以给它赋值并将它保存到数据库中。

[...]
    else:
        try:
        [...]
            # Instantiate object
            bus = Bus()
            
            # Define values
            bus.field1 = value_1
            bus.field2 = value_2
            [...]

            # Save object
            bus.save()
        [...]
[...]

有模特Bus:

class Bus(models.Model)
    field1 = [...]
    field2 = [...]
    [...]

【讨论】:

    【解决方案2】:

    bus 有太多参数。您应该像这样分配所有总线详细信息:

    bus_form = (bus.Type=Type
                bus.Number_of_Seats=Number_of_Seats
                bus.driver=driver
                bus.hostess=hostess
                manager_obj1=Manager.objects.get(id=manager_id)
                bus.manager_id=manager_obj1
                staff_obj1=Staff.objects.get(id=staff_id)
                bus.staff_id=staff_obj1
              )
    bus_form.save()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 2021-12-15
      • 2023-02-06
      • 2021-09-15
      • 2013-07-06
      • 2022-01-05
      相关资源
      最近更新 更多