models.py
class club(models.Model):
name = models.CharField(max_length=30)
city = models.CharField(max_length=30)
premiere_leauge = models.BooleanField(default=False)
def __str__(self):
return self.name
Views.py
...
a = request.POST['club']
b = request.POST['city']
result = club.objects.all.get(name__exact=a, city__exact=b)
....
一切都很好,但我相信结果会让我回答:
def __str__(self):
return self.name
无论如何,我想要相当于'SELECT * FROM APP_CLUB where name='something and city='something';
所以我可以在django中进行进一步的操作,如:
if result[3] is True:
do_something()
答案 0 :(得分:3)
正如官方documentation:
中所述club.objects.filter(name='something')
它将返回与:
完全相同'SELECT * FROM APP_CLUB where name='something';
示例:
clubs = club.objects.filter(name__exact='something')
for club in clubs:
if club.premier_league:
do_something()
如果你想只获得一个俱乐部,那就这样做:
club = club.objects.get(name='something')
premier_league_value_of_club = club.premier_league
答案 1 :(得分:1)
使用filter
代替get
。
results = club.objects.filter(name__exact=a, city__exact=b)
然后,您可以迭代它以访问所有模型属性,如下所示
for result in results:
print result.name, result.city, result.premier_league
此外,根据PEP-8,您应该将您的班级名称命名为标题Club
,而不是小写club
。
答案 2 :(得分:1)
你几乎就在那里,我想你在这里错过了filter功能。您可以像这样使用它:
a = request.POST['club']
b = request.POST['city']
result = club.objects.filter(name__exact=a, city__exact=b)
它将返回一个包含实际数据库条目的查询集。
__str__(self)
函数用于将查询集条目转换为字符串,无论是用字符串转换还是打印它。
然后关于这个:
if result[3] is True:
do_something()
我不能很好地理解你的意思,但如果3
是数据库中条目的id,那么你可以这样做:
if result.get(id=3).premiere_leauge:
do_something()
但您可能想要先检查具有id的条目是否存在以避免错误:
if result.filter(id=3).exists() and result.get(id=3).premiere_leauge:
do_something()
答案 3 :(得分:0)
您应该修改您的查询,如下所示
result = club.objects.all.filter(name__exact=a, city__exact=b)
祝你好运!!