繁体   English   中英

在Django中查询ManyToMany字段

[英]Querying ManyToMany fields in Django

我有这些定义的模型

class Occupation(models.Model):
    title = models.CharField(max_length=150)
    code = models.CharField(max_length=10)
    what_they_do = models.TextField(blank=True, default="")
    skills = models.ManyToManyField(Skill)
    knowledge = models.ManyToManyField(Knowledge)
    abilities = models.ManyToManyField(Ability)
    technologies = models.ManyToManyField(Technology)
    created_at = models.DateTimeField(auto_now_add=True)
    modified_at = models.DateTimeField(auto_now=True)

    def __unicode__(self):
        return self.title

知识,技术,技能和能力相似的地方。 我已经使用了这种结构。

class Skill(models.Model):
    title = models.CharField(max_length=64)
    element_id = models.CharField(max_length=10)
    created_at = models.DateTimeField(auto_now_add=True)
    modified_at = models.DateTimeField(auto_now=True)

    def __unicode__(self):
       return self.title

在我的模板中,当前我有:

<ul>
 {% for skill in ocuppation.skills.all %}
    <li>{{skill.title}}</li>
    {% endfor %}
</ul>

但{{skill.title}}为空白。

在我的views.py中,我已经定义了:

def detail(request, pk):
   possible_occupation = Occupation.objects.filter(code=pk)
   occupation = possible_occupation[0] if len(possible_occupation) == 1 else None
   if occupation is not None:
       context = {
           'occupation': occupation
       }
       return render(request, 'careers/detail.html', context)
    else:
       return HttpResponseNotFound("No hay datos")

当我使用调试器时,我可以看到职业,技能,职业...都为无。 如果我在django admin中检查了一个职业对象,那么一切似乎都还可以,但是我不能在模板中使用它们。

有人可以帮忙吗? 对不起,我的英语不好

你有拼写错误occupation在你的模板。

{% for skill in ocuppation.skills.all %}

它应该是

{% for skill in occupation.skills.all %}

这是下次调试的提示。 当for循环不输出任何内容时,我将尝试包含我正在循环的查询集。

{{ ocuppation.skills.all }}

如果不起作用,请尝试实例本身

{{ ocuppation }}

然后我会知道问题出在可变ocuppation ,而不是多对多领域。 希望我会发现拼写错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM