Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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
Python 在django模板中查询多对多字段_Python_Django_Django Models_Django Templates_Django Views - Fatal编程技术网

Python 在django模板中查询多对多字段

Python 在django模板中查询多对多字段,python,django,django-models,django-templates,django-views,Python,Django,Django Models,Django Templates,Django Views,这可能不相关,但只是想问一下 如果一个对象从视图传递到模板,并且在模板中,我将能够查询多对多字段 型号代码: class Info(models.Model): xls_answer = models.TextField(null=True,blank=True) class Upload(models.Model): access = models.IntegerField() info = models.ManyToManyField(Info)

这可能不相关,但只是想问一下

如果一个对象从视图传递到模板,并且在模板中,我将能够查询多对多字段

型号代码:

  class Info(models.Model):
     xls_answer  = models.TextField(null=True,blank=True)


  class Upload(models.Model):
     access = models.IntegerField()
     info = models.ManyToManyField(Info)
     time = models.CharField(max_length=8, null=True,blank=True)
     error_flag = models.IntegerField()

     def __unicode__(self):
        return self.access
观点:

         // obj_Arr  contains all the objects of upload
        for objs in obj_Arr:
           logging.debug(objs.access)
           logging.debug(objs.time)


        return render_to_response('upload/new_index.html', {'obj_arr': obj_Arr , 'load_flag' : 2})
在模板中,是否可以解码多对多字段,因为我们正在传递对象


谢谢..

一般来说,您可以通过django模板系统中的路径跟踪任何不带参数的属性或方法调用

对于上面的视图代码,类似

{% for objs in obj_arr %}
{% for answer in objs.answers.all %}
  {{ answer.someattribute }}
{% endfor %}
{% endfor %}
应该做你期望的事


(我无法从您的代码示例中完全了解细节,但希望这能说明您可以通过模板了解哪些内容)

也可以注册这样的过滤器:

models.py 额外的标签
有关过滤器的更多信息,请参见此处

是否可以按id asc排序?您可以在模型定义中定义默认顺序。
class Profile(models.Model):
    options=models.ManyToManyField('Option', editable=False)
@register.filter
def does_profile_have_option(profile, option_id):
    """Returns non zero value if a profile has the option.
    Usage::

        {% if user.profile|does_profile_have_option:option.id %}
        ...
        {% endif %}
    """
    return profile.options.filter(id=option_id).count()