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.nameViews.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()发布于 2017-04-05 11:59:53
如官方文档中所建议的那样
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发布于 2017-04-05 11:58:43
使用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。
发布于 2017-04-05 12:05:24
你快到了,我想你错过了过滤器函数。你可以这样使用它:
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()https://stackoverflow.com/questions/43230444
复制相似问题