Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 根据变量使用不同的形式_Django - Fatal编程技术网

Django 根据变量使用不同的形式

Django 根据变量使用不同的形式,django,Django,我有一个“产品”字段,我想用它来确定要显示的表单。我试图在视图中执行此操作,但不知道是否应该在模板中执行此操作。我尝试了以下方法,但是if语句没有指定“form”。我做错了什么 @login_required def update_message(request, pk): message = get_object_or_404(Submission, pk=pk) author = message.author date_posted = message.date_po

我有一个“产品”字段,我想用它来确定要显示的表单。我试图在视图中执行此操作,但不知道是否应该在模板中执行此操作。我尝试了以下方法,但是if语句没有指定“form”。我做错了什么

@login_required
def update_message(request, pk):
    message = get_object_or_404(Submission, pk=pk)
    author = message.author
    date_posted = message.date_posted
    product = message.product
    message_obj = Submission.objects.get(pk=pk)
    program_type = message.program_type

if author == request.user:

    if request.method == 'POST':
        if product == 'Apple':
            form = AppleForm(request.user, request.POST, instance=message)

        if product == 'Orange':
            form = OrangeForm(request.user, request.POST, instance=message)


        if form.is_valid():
            message_sub = form.save(commit=False)
            message_sub.author = request.user
            message_sub.date_posted = timezone.now()
            message_sub.save()
            form.save_m2m()
            messages.success(request, 'Message updated')
            return redirect('submission-list')
    else:
        if product == 'Apple':
            form = AppleForm(request.user, instance=message)

        if product == 'Orange':
            form = OrangeForm(request.user, instance=message)

else:
    messages.warning(request, 'You can't do that.')
    return redirect('message-submission-list')

return render(request, 'programs/submission_create_form.html', {'product':product,'form': form, 'message_obj': message_obj,'program_type':program_type})
类消息提交(models.Model):


在视图中这样做没有错。如果在那些
If
语句之后没有定义表单,则表示
产品的值不是
Apple
Orange
,而是其他值。我会再次检查
product
的值以解决问题


因为
Product
是一个类,所以应该引用一个字段。你没有发布它的代码,但是举个例子

if form == product.name

如果有
名称
字段。

在视图中这样做没有什么错。如果在那些
If
语句之后没有定义表单,则表示
产品的值不是
Apple
Orange
,而是其他值。我会再次检查
product
的值以解决问题


因为
Product
是一个类,所以应该引用一个字段。你没有发布它的代码,但是举个例子

if form == product.name

如果有一个
名称
字段。

正如我在评论中提到的,问题是
产品
是另一个型号的外键。在模板中,FK将使用该模型的
\uuu str\uuu
方法显示,但这并不使其等于该显示值。您应该明确地与目标模型上的相关字段进行比较:

if product.fruit_type == 'Orange'   # or whatever the field is

(或者,如果str(product)=‘Orange’
则可以执行
,但这更为脆弱,并且以一种不太好的方式耦合显示逻辑。)

正如我在评论中提到的,问题是
产品
是另一个模型的外键。在模板中,FK将使用该模型的
\uuu str\uuu
方法显示,但这并不使其等于该显示值。您应该明确地与目标模型上的相关字段进行比较:

if product.fruit_type == 'Orange'   # or whatever the field is

(或者,如果str(product)=‘Orange’
则可以执行
操作,但这更为脆弱,并且以一种不太好的方式耦合显示逻辑。)

如果未分配表单变量,则
if
语句都不正确。什么是
消息.产品
?显示提交模型定义。我将“产品”作为测试传递给模板,它可以通过Apple或Orange测试并显示出来。这就是为什么我不明白为什么ifs不起作用。好吧,那是什么领域?例如,如果它是另一个型号的外键,它可能打印为“Apple”,但不直接等于“Apple”。显示定义。是的,我想你可能知道一些事情,这是一个FK。我刚刚用model更新了帖子如果表单变量没有赋值,那么你的
if
语句都不是真的。什么是
消息.产品
?显示提交模型定义。我将“产品”作为测试传递给模板,它可以通过Apple或Orange测试并显示出来。这就是为什么我不明白为什么ifs不起作用。好吧,那是什么领域?例如,如果它是另一个型号的外键,它可能打印为“Apple”,但不直接等于“Apple”。显示定义。是的,我想你可能知道一些事情,这是一个FK。我刚刚用modelAwesome更新了帖子,我现在看到了。我将其设置为message.product.name=='Orange',它工作正常。我也试过str,也很管用,但我肯定会用第一种方法。谢谢太棒了,我现在明白了。我将其设置为message.product.name=='Orange',它工作正常。我也试过str,也很管用,但我肯定会用第一种方法。谢谢