2016-02-19 77 views
1

我得到了一个多对多字段使用一个ForeignKey的模型:的Django ForeignKey的在多对多字段显示为无

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

在标签栏只给了我:

DefinitionTag.None

我如何显示那里所有标签选择在manytomany领域?

我希望我会得到一个提示! 谢谢

+1

看看[这个答案](http://stackoverflow.com/questions/3411961/querying-many-to-many-fields-in-django -模板)。你需要遍历'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

尝试通过标签循环:

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

这帮了我很多,谢谢! –

+0

非常欢迎 –

相关问题