繁体   English   中英

Django 获取模型字段

[英]Django get model field

我正在尝试根据所选用户选择一个 user_id,然后将 user_id 传递给另一个函数,以便在保存表单条目时为所选用户执行一些计算。 但我不确定如何做到这一点。 添加新条目并保存 (add_monthly_entitlement) 并保存表单时,我想将所选的 user_id 传递给另一个方法来执行一些计算。

表格图片

 class month_and_year(models.Model): user = models.ForeignKey(User, default='', on_delete=models.CASCADE) Month = models.CharField(max_length=100, default="", null=True) Year = models.CharField(max_length=100, default='') def __str__(self): return self.user.first_name @login_required() def add_monthly_entitlement(request): if request.POST: entitlement_form = update_entitlement_form(request.POST) my_field = month_and_year._meta.get_field('user_id') if entitlement_form.is_valid(): calculate_monthly_entitlement(my_field) entitlement_form.save() return HttpResponseRedirect('/staff_balances') else: entitlement_form = update_entitlement_form args = {} args.update(csrf(request)) args['form'] = entitlement_form return render(request, 'update_entitlement_form.html', args) def calculate_monthly_entitlement(get_id): get_id = get_id get_leave_balance_id = Leave_Balance.objects.get(user_id=get_id) get_entitlement_id = monthly_entitlement.objects.get(user_id=get_id) get_leave_balance_id.Leave_current_balance = get_leave_balance_id.Leave_current_balance + get_entitlement_id.entitlement get_leave_balance_id.save()

# You can use session variables

# set session value
request.session['user_id'] = value

# get session value
request.session['user_id']

我通过获取选定的字段值并将该值传递给执行计算的函数来修复它。

form.cleaned_data[字段名]

希望这可以帮助将来的人

 def update_monthly_entitlement(request): if request.POST: entitlement_form = update_entitlement_form(request.POST) if entitlement_form.is_valid(): my_field = entitlement_form.cleaned_data['user'] calculate_monthly_entitlement(my_field) entitlement_form.save() return HttpResponseRedirect('/staff_balances') else: entitlement_form = update_entitlement_form args = {} args.update(csrf(request)) args['form'] = entitlement_form return render(request, 'update_entitlement_form.html', args)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM