Запросы от многих ко многим полям в шаблоне Django - PullRequest
9 голосов
/ 05 августа 2010

Это может быть неактуально, но просто хотелось спросить,

ЕСЛИ объект передан из представлений в шаблон, и в шаблоне я смогу запросить множество полей

Моделиcode:

  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})

В шаблоне можно декодировать поле многие ко многим, поскольку мы передаем объект

Спасибо ..

Ответы [ 2 ]

30 голосов
/ 05 августа 2010

В общем, вы можете следовать за всем, что является атрибутом или вызовом метода без аргументов, через путь в системе шаблонов django.

Для кода просмотра выше, что-то вроде

{% for objs in obj_arr %}
{% for answer in objs.answers.all %}
  {{ answer.someattribute }}
{% endfor %}
{% endfor %}

должен делать то, что вы ожидаете.

(я не мог разобрать особенности вашего примера кода, но, надеюсь, это осветит то, что вы можете получить с помощью шаблонов)

1 голос
/ 07 августа 2012

Также можно зарегистрировать фильтр следующим образом:

models.py

class Profile(models.Model):
    options=models.ManyToManyField('Option', editable=False)

extra_tags.py

@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()

Более подробную информацию о фильтрах можно найтиздесь https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

...