Как добавить свойство к объекту, который находится в поле ManyToMany? - PullRequest
0 голосов
/ 03 января 2019

Я хотел бы отправить шаблону новое свойство в модели, находящейся в ManyToManyField

У меня есть этот цикл в одной из моих моделей с ManyToManyField:

for bar in foo.bars.all():
   #This property 'allow_something' doesn't exist in model, I just need it in this situation
   bar.allow_something = True

Втот же код, если я попробую это, все пойдет как положено:

#It will print "True"
print(bar.allow_something)

Но когда я вызываю новое свойство в шаблоне, оно не работает.Это код в моем HTML-шаблоне:

{% for bar in foo.bars.all %}
   {{ bar.allow_something }} <-- nothing happens here. It should display "True"
{% endfor %}

Пожалуйста, вы можете сказать мне, что я делаю неправильно?

1 Ответ

0 голосов
/ 03 января 2019

Когда вы выполняете

for bar in foo.bars.all():
   #This property 'allow_something' doesn't exist in model, I just need it in this situation
   bar.allow_something = True

allow_something существует только до тех пор, пока вы находитесь в блоке forloop, но объекты в наборе запросов не были обновлены, поэтому он не работаетв шаблоне.

Предполагая, что не все должно быть правдой, а необходимая логика не слишком сложна, вы можете легко проверить что-то в шаблоне

{% for bar in foo.bars.all %}
    {% if bar.something == 'something' %}
        ...
     {% else %}
        ...
     {% endif %
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...