首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django-Q和request.POST数据

Django-Q和request.POST数据
EN

Stack Overflow用户
提问于 2020-10-07 21:20:06
回答 1查看 297关注 0票数 1

我有一个预算应用程序,我正在开发和使用Django和Django-Q。我想要创建一个计划,以便根据我创建的Django-Q计划自动发布费用。我遇到的问题是理解在Djano-Q时间表中使用三个位置参数的逻辑。

这三个位置参数是request、budget_id和category_id。

我希望将数据发布到我的add_automatic_expense视图中,该视图将根据表单数据创建初始费用,然后创建Django-Q计划,以触发每月运行的费用创建,并继续进行相同的数据。

有人能帮我们了解一下这个过程吗?谢谢。

views.py

代码语言:javascript
复制
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错误节点或字符串:<_ast.Name对象在0x7fa06bf2a0d0>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-07 23:41:45

我想通了。在我的add_automatic_expense函数中,我将计划创建更改如下:

代码语言:javascript
复制
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。这使我可以访问我的时间表中的所有数据。

代码语言:javascript
复制
def add_auto_expense(**kwargs):
    new_expense = Expense.objects.create(amount=kwargs['amount'], description=kwargs['description'],
    transaction_date=kwargs['transaction_date'], categories_id=106)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64252454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档