为页面上的多个html id分配“数据库ID”

时间:2011-02-17 05:36:03

标签: django jquery django-templates django-forms

我在引用数据库中表的id时使用model.id,在引用我的html中的元素的id时使用id。

我有一个django项目,我正在使用一些隐藏的表单字段(所有表单现在对于该隐藏字段具有相同的id)来容纳model.id。只要在呈现页面时知道model.id,这就很有效。

我现在正试图在没有给出model.id的情况下修改进程(即有人选择创建我的模型的新实例)。至于后端,我有这个工作。没有提供model.id,视图知道它应该提供空表单。此时我选择不创建模型的新实例,因为我只想在用户实际在其中一个表单中输入内容时。

如果用户在表单中输入内容,则表单处理会创建一个新的模型实例,并将该ID传递回用户浏览器。我试图做的是使用jquery表单插件将返回数据保存到隐藏的地方,然后我会查看并使用val将所有隐藏字段的id设置为返回的model.id,以便下一个字段/表单用户提交将知道写入刚刚创建的模型。

现在看着这个我猜是多个具有相同id的元素的想法很糟糕,但我确实希望它们始终是相同的,只有隐藏的字段才能容纳相同的Model.id on页面上的每一个表格。

我尝试过像下面这样的事情。但是,页面上只有一个ID实际上已分配了值。我应该以不同的方式实现这一目标吗?我是否应该添加一些内容以使所有出现的id都设置为.val(model.id)?如果没有,有没有人有任何关于如何去做的建议?也许django提供了一种更清洁的方式来完成我想要完成的任务?

表单提交中返回的响应。

<response>
    <the_model_id_brought_back>3732</the_model_id_brought_back>
    ...
<response>

尝试将所有“id_in_multiple_places”id设置为返回的model.id的jQuery代码。

jQuery('#descriptionForm').ajaxForm({
            target: '#response',
            success: function(data) {
                the_model_id = jQuery('#response').find("the_model_id_brought_back").html();
                jQuery('#id_in_multiple_places').val(the_model_id);
            }
        });

解释为什么我有这样的多种形式。表格由1个可见字段组成。页面上有多个表单。当用户离开某个字段(这意味着他们也会离开表单)时,我会将该表单提交给服务器。这将允许他们的数据总是被保存,即使他们停在一半并将他们的计算机扔出窗外。他们可以去另一台电脑,然后从他们离开的地方继续。

感谢。

1 个答案:

答案 0 :(得分:2)

  

现在看着这个,我猜想有多个具有相同id的元素是不好的

这不仅是坏事,也是不可能的。你不能做这个。你可以通过使用类来解决这个问题,这些类不必是唯一的,但你可能不应该这样。

> 您可以从该元素开始并向下遍历以按类名查找子元素。