Django将对象从模板传递到视图

时间:2016-05-30 19:07:29

标签: javascript python django object django-models

我非常喜欢django模板语言,但是当涉及从模板传递多个字符串到视图时,我不知道。因此,我想弄清楚使用哪种现代工具。

你建议接下来要解决这些问题,或者我还没有找到django的方法吗?

编辑:我知道查询对象。我正在寻找的是将对象传递回所有属性。

foo的简单模型:

SELECT vendor_id || '|' || vendor_name AS "vid|vname"
  FROM vendors;

我通过vid|vidname将实例传递给模板。在模板上,他们像这样处理:

此处为自动填充的文本字段:

class foo(models.Model):
    name = models.CharField(max_length=75)
    categories = models.ManyToManyField(Category)

    def __str__(self):
        return self.name

作为每个foo实例的tile:

foos = foo.objects.all()

<form method="POST" action="/path/"> {% csrf_token %} <input type="text" class="btn btn-default" name="foo" list="foos"> <datalist id="foos"> {% for foo in foos %} <option value="{{ foo }}"> {% endfor %} </datalist> <button class="btn btn-default">send</button> </form> 中,我将foo名称作为字符串。我想将整个实例发送回视图来处理它。只需发送<form method="POST" action="/path"> {% csrf_token %} <ul class="wrapper"> {% for category_ in categories %} {% for foo in foos %} {% if category_ in foo.categories.all %} <input name="foo" type="submit" value="{{ foo }}" class="box box_text"> {% endif %} {% endfor %} {% endfor %} </ul> </form> 即可。但我不知道如何将request.POST放入模板而不显示在foo.id旁边,而是在foo.id中作为变量发送。

除了这个问题,我想建议学习这些任务的技术(JSON,Ajax,...)

1 个答案:

答案 0 :(得分:0)

如果看不到foo对象的实际情况,我会假设发生了以下情况:

  1. 您只在模板中指定foo
  2. 由于您只需要指定,Django将尝试将对象打印为字符串,调用对象的__str__魔术方法或__unicode__
  3. 如果您只想打印名称,然后只打印ID,只需专门打印这些属性,而不仅仅是foo,如:

    <option value="{{ foo.id }}">{{ foo.name }}</option>