Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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
Javascript Django使用JSON获取模型方法的值_Javascript_Django_Json - Fatal编程技术网

Javascript Django使用JSON获取模型方法的值

Javascript Django使用JSON获取模型方法的值,javascript,django,json,Javascript,Django,Json,我目前正在尝试使用javascript显示一个额外的表单字段,如果所选产品在检查此字段的方法上返回true。虽然我已经为表单select设置了onchange部件,但实际上我很难访问products方法。我假设我必须使用json,但我没有这方面的经验。我希望执行以下操作,即在if语句中使用该方法的返回。我目前尝试使用的代码是(我意识到它只是显示一个警报atm,但我的首要任务是让它工作): 它使用: @register.tag(name="check_opening_date") def che

我目前正在尝试使用javascript显示一个额外的表单字段,如果所选产品在检查此字段的方法上返回true。虽然我已经为表单select设置了onchange部件,但实际上我很难访问products方法。我假设我必须使用json,但我没有这方面的经验。我希望执行以下操作,即在if语句中使用该方法的返回。我目前尝试使用的代码是(我意识到它只是显示一个警报atm,但我的首要任务是让它工作):

它使用:

@register.tag(name="check_opening_date")
 def check_opening_date(parser, token): 
"""return whether the product should show the opening date or not"""

product = Product.objects.get(pk=productID)

return serializers.serialize('json',product.show_opening_date())
我遇到的问题是,我不确定如何将optionValue传递给check_opening_date函数,以及如何返回product.show_opening_date()的值


任何提示都将不胜感激。

有两种方法

  • 呈现页面时,将
    show\u opening\u date()
    的结果与表单选择一起保存在某处。这意味着,对于列出的每个产品,您要么在某处创建相应的隐藏输入,要么将结果保存为select或其他内容中的属性。选择产品时,只需使用javascript检查此隐藏输入或属性的值。加载后,不需要与服务器交互。(有一个对服务器的请求)

  • 或者,您只需显示产品。选择一个后,您可以使用ajax与服务器联系,并提供产品的ID。服务器运行
    product.show\u opening\u date()
    并返回json和结果。(有许多对服务器的请求;初始请求,以及用户每次选择产品时的请求)


  • 你所拥有的没有意义。请记住,模板(以及所有模板变量和模板标记)是在呈现页面时组装的,因此它们没有执行javascript的任何概念(或onchange事件等)。您似乎对模板标记的概念有点困惑。这些应该用于模板逻辑,以显示已在视图中聚合的信息(通常-它不是一成不变的)

    在加载页面并基于该数据显示表单字段后,是否尝试从服务器异步获取数据?我想是的。。我希望当用户选择一个产品时,如果show_opening_date返回true,那么我将显示表单字段,以便在中输入一个开业日期。由于并非所有产品都返回true,我的猜测是必须使用json来确定产品是否返回true,然后根据需要显示表单字段。如果这有道理的话。(我不确定这是否公平。)
    show\u opening\u date
    Product
    模型上的一个方法吗?确实(它检查产品上的值,只返回True或False),我将使用选项2运行,因为产品是动态填充的。谢谢
    @register.tag(name="check_opening_date")
     def check_opening_date(parser, token): 
    """return whether the product should show the opening date or not"""
    
    product = Product.objects.get(pk=productID)
    
    return serializers.serialize('json',product.show_opening_date())