Python Django-Q和request.POST数据
我有一个正在使用Django和Django-Q的预算应用程序。我想创建一个计划,根据我创建的Django-Q计划自动发布费用。我的问题是理解在Djano-Q时间表中使用三个位置参数的逻辑 三个位置参数是request、budget\u id和category\u id 我想将数据发布到我的add_automatic_expense视图,该视图将基于表单数据创建初始费用,然后创建一个Django-Q计划,以触发每月使用相同数据运行的费用创建 有人能帮我解释一下这个过程吗?谢谢 views.pyPython Django-Q和request.POST数据,python,django,django-q,Python,Django,Django Q,我有一个正在使用Django和Django-Q的预算应用程序。我想创建一个计划,根据我创建的Django-Q计划自动发布费用。我的问题是理解在Djano-Q时间表中使用三个位置参数的逻辑 三个位置参数是request、budget\u id和category\u id 我想将数据发布到我的add_automatic_expense视图,该视图将基于表单数据创建初始费用,然后创建一个Django-Q计划,以触发每月使用相同数据运行的费用创建 有人能帮我解释一下这个过程吗?谢谢 views.py d
def add_automatic_expense(request, budget_id, category_id):
get_budget = Budget.objects.get(id=budget_id)
get_category = Category.objects.get(id=category_id)
form = ExpenseEventForm()
if request.method == "POST":
Schedule.objects.create(func='budgeteer.views.add_automatic_expense', args='request, budget_id, category_id',repeats=-1, schedule_type="D")
form = ExpenseEventForm(request.POST)
expense = form.save(commit=False)
expense.amount = request.POST.get('amount')
expense.description = request.POST.get('description')
expense.transaction_date = request.POST.get('transaction_date')
expense.categories_id = category_id
expense.automatic_payment = True
expense.save()
expense_id = Expense.objects.last()
get_budget.expense_set.add(expense_id)
get_category.category_expense.add(expense_id)
return redirect('view_expenses', budget_id=budget_id, category_id=category_id)
else:
form = ExpenseEventForm()
return render(request, 'budgeteer/add_automatic_expense.html', {'form':form})
当我使用表单数据发布到该函数时,它会增加初始费用,但是当我尝试运行QCluster之后,我会出现以下错误:
14:34:39[Q]错误格式错误的节点或字符串:
我想出来了。在我的“添加自动费用”功能中,我将创建的计划更改为如下所示:
Schedule.objects.create(func='budgeteer.views.add_auto_expense', name=None, hook=None, schedule_type='O', minutes=None, repeats=-1,
kwargs={"amount":request.POST.get('amount'), "description": request.POST.get('description'), "transaction_date":request.POST.get('transaction_date'),
'expense_frequency_choice_field':request.POST.get('expense_frequency_choice_field'),'automatic_payment':request.POST.get('automatic_payment'), 'categories_id':request.POST.get('categories')})
然后,我创建了另一个名为add_auto_expense的函数视图,其位置值为**kwargs。这使我能够访问日程表中的所有数据
def add_auto_expense(**kwargs):
new_expense = Expense.objects.create(amount=kwargs['amount'], description=kwargs['description'],
transaction_date=kwargs['transaction_date'], categories_id=106)
我想出来了。在我的“添加自动费用”功能中,我将创建的计划更改为如下所示:
Schedule.objects.create(func='budgeteer.views.add_auto_expense', name=None, hook=None, schedule_type='O', minutes=None, repeats=-1,
kwargs={"amount":request.POST.get('amount'), "description": request.POST.get('description'), "transaction_date":request.POST.get('transaction_date'),
'expense_frequency_choice_field':request.POST.get('expense_frequency_choice_field'),'automatic_payment':request.POST.get('automatic_payment'), 'categories_id':request.POST.get('categories')})
然后,我创建了另一个名为add_auto_expense的函数视图,其位置值为**kwargs。这使我能够访问日程表中的所有数据
def add_auto_expense(**kwargs):
new_expense = Expense.objects.create(amount=kwargs['amount'], description=kwargs['description'],
transaction_date=kwargs['transaction_date'], categories_id=106)