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

Django Get value of model method with JSON

本文关键字:方法 模型 获取 使用 JSON Django      更新时间:2023-09-26

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

function openingCheck(optionValue){
    {% check_opening_date as json %}
    var checkOpeningDateJSON = {{json|safe}};
    if(checkOpeningDateJSON)
        alert(optionValue);
};

其中用途:

@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() 的值。

任何提示将不胜感激。

有两种方法。

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

  2. 或者,您只需显示产品。选择一个后,您可以使用 ajax 与服务器联系,并提供产品的 ID。服务器运行product.show_opening_date()并返回包含结果的 json。(对服务器的请求很多;初始请求,以及每次用户选择产品时)

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