我正在使用Django 1.3和sqlite3。我的模特是:
class Trial(models.Model):
person = models.ManyToManyField(Person, blank=True)
def __unicode__(self):
return self.strId
class Person(models.Model):
name = models.CharField(max_length=500)
def __unicode__(self):
return self.name
我想查询数据库并返回包含名为“Tom”的人的Trial.id条目列表。我的尝试看起来像这样:
found_entries = Person.objects.filter(name__contains="Tom")
Toms = []
for items in found_entries:
Toms.append(Trial.objects.filter(person__name__contains="Tom"))
当我将Toms列表发送到模板时,我得到一个完整的列表< Trial:<内置函数id>>
然而,当我尝试获取Toms.id,或Toms.name,甚至是Toms.person时,我收到错误:
'QuerySet' object has no attribute 'id'
我最终想要的是包含人名为“Tom”的Trial.id列表。任何帮助都是非常感激的。
答案 0 :(得分:2)
您的初始查询是重新发布的。为什么不用这个:
# all the trials with a person whom name contains 'Tom'
trials = Trial.objects.filter(person__name__contains='Tom')
在你的模板中:
{% for trial in trials %}
{{ trial.id }}
{% endfor %}
答案 1 :(得分:0)
class Trial(models.Model):
person = models.ManyToManyField(Person, blank=True, related_name="user_trials")
def __unicode__(self):
return self.strId
在视图中:
found_entries = Person.objects.filter(name__contains="Tom")
模板:
{% for found_entry in found_entries %}
{% for trial in found_entry.user_trials.all %}
{{ trial.id }}
{% endfor %}
{% endfor %}