2016-02-19 3 views
1

я получил модель, которая использует ForeignKey в manytomany поле:Джанго ForeignKey в ManytoMany поле отображается None

class DefinitionTag(models.Model): 
    tag = models.CharField(max_length=50, default="Tag") 

    def __str__(self): 
     return self.tag 


class Definition(models.Model): 
    name = models.CharField(max_length=100) 
    definition = models.CharField(max_length=1000) 
    fundstellen = models.CharField(max_length=300, blank=True) 
    wissenswertes = models.CharField(max_length=1000, blank=True) 
    tags = models.ManyToManyField(DefinitionTag) 

    def __str__(self): 
     return self.name 

это работает, и в админ все настроено так, что я могу использовать его. Проблема заключается в том, если я пытаюсь отобразить таблицу с записями базы данных на мой взгляд, с кодом:

def home(request): 
    query_results = Definition.objects.all() 

    context = { 
     "query_results": query_results 
    } 
    return render(request, 'home.html', context) 

и в HTML:

{% for item in query_results %} 
    <tr> 
     <td>{{ item.name }}</td> 
     <td>{{ item.definition }}</td> 
     <td>{{ item.fundstellen }}</td> 
     <td>{{ item.wissenswertes }}</td> 
     <td>{{ item.tags }}</td> 
    </tr> 
    {% endfor %} 

В столбце тега это дает мне только:

ОпределениеTag.None

Как я могу отобразить там все теги, выбранные в поле manytomany?

Надеюсь, я получу подсказку! Спасибо

+1

Посмотри на [этот ответ] (http://stackoverflow.com/questions/3411961/querying-many-to-many-fields-in-django -template). вам нужно выполнить итерацию через 'item.tags.all'. –

ответ

5

Вам нужно зациклиться на поле m2m, чтобы получить все теги. Только со ссылкой на это не даст вам отдельные теги, которые ссылаются на него:

{% for item in query_results %} 
    <tr> 
     <td>{{ item.name }}</td> 
     <td>{{ item.definition }}</td> 
     <td>{{ item.fundstellen }}</td> 
     <td>{{ item.wissenswertes }}</td> 
     <td> 
      {% for tag in item.tags.all %} 
       {{ tag }} 
      {% endfor %} 
     </td> 
    </tr> 
{% endfor %} 

Если вы не знаете, как получить все элементы из поля m2m, проверить django doc.

2

Try пробегает по тегу:

{% for tag in item.tags.all %} 
    {{ tag }} 
{% endfor %} 
+0

Это мне очень помогло, спасибо! –

+0

Вы очень приветствуетесь –

Смежные вопросы