Py学习  »  Django

在多对多关系中使用表单的django更新字段

saum • 6 年前 • 1857 次点击  

我有两种模式在很多对很多的关系。我想使用表单更新字段,当授权人有权拒绝或批准休假时,表单有一个下拉列表。一旦假期被批准,我希望能够调整假期的当前余额。但是,我从代码行current_balance.save()中得到错误消息:“float”对象没有属性“save”

def unitDirectorForm(request,id):
    if request.method=='POST':
     
        getstaffid=NewLeave.objects.get(id=id)
        form = DirectorForm(request.POST, instance=getstaffid)
        if form.is_valid():
            form.save()
            total_days = getstaffid.Total_working_days
            current_balance = getstaffid.user.leave_balance.Leave_current_balance
            diff_balance = current_balance - total_days
            current_balance = diff_balance
            current_balance.save()
            return HttpResponse('You have successfuly Authorise the leave')

    else:
        
        form=DirectorForm()
        balance_form = leavebbalanceForm()

    return render(request,'managerauthorisedform.html',{'form':form})
    
                                                  
    
class LeaveBalance(models.Model):
    user=models.OneToOneField(User,on_delete=models.CASCADE,primary_key=True,)
    Leave_current_balance= models.FloatField(null=True, blank=True, default=None)
    Year=models.CharField(max_length=100,default='')
    def __unicode__(self):
             return  self.Year


class NewLeave(models.Model):
      user=models.ForeignKey(User,default='',on_delete=models.CASCADE)
   leave_balance=models.ManyToManyField(Leave_Balance)
    Leave_type=models.CharField(max_length=100,blank=False,default='')
    Total_working_days=models.FloatField(null=True,  blank=False)
    leave=(
        ('annual','annual'),
        ('sick','sick'),

    )

  Leave_type=models.CharField(max_length=100,choices=leave,blank=False,default='')
    def __unicode__(self):
        return  self.Leave_type

class DirectorForm(forms.ModelForm):
    class Meta:
        model=NewLeave
        fields=('Director_Authorization_Status','Authorized_by_Director','Date_Authorized',)
        widgets={
            'Date_Authorized':DateInput()
        }
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/44334
文章 [ 1 ]  |  最新文章 6 年前
rchurch4
Reply   •   1 楼
rchurch4    7 年前

所以首先,我不知道你 form 看起来,但我猜。首先,您的错误是因为您试图调用 save 对类型为的变量的函数 float 。你应该保存表单,而不是数字。你需要做所有的计算 total_days... current_balance = diff... 打电话之前 form.save() 。在完成这些计算之后,您应该将 current_balance form.fields['Leave_current_balance'] ,然后保存表单。