我尝试使用Python/Django中的“get”方法从数据库中获取一行。我用的模型是
class SavedQuery(models.Model):
name = models.CharField(max_length = 512)
queryText = models.CharField(max_length = 2048)
created = models.DateTimeField(auto_now_add=True)
现在,我在数据库中保存了一些值,以确保所有值都是唯一的。所以现在我想得到一个名称时queryText的值。我尝试使用以下代码:
^{pr2}$但是,输入行不起作用。我通过浏览器收到500个错误,而我运行服务器的终端没有显示任何错误消息。调试输出对我来说也是无法理解的。在
我的创可贴解决方案是使用SavedQuery.objects.all(),然后检查name字段,但是我在Django站点上看到,在给定的字段中有一个特定值的对象列表是可能的,所以我宁愿这样做。在
编辑:在出错的地方调试输出
2014-06-12 19:56:20 DEBUG bolt django.db.backends util.execute:79: (0.000) SELECT `bolt_savedquery`.`id`, `bolt_savedquery`.`name`, `bolt_savedquery`.`queryText`, `bolt_savedquery`.`created` FROM `bolt_savedquery` WHERE `bolt_savedquery`.`name` = 'Kyle' ; args=(u'Kyle',)
2014-06-12 19:56:20 DEBUG bolt django.db.backends util.execute:79: (0.000) SELECT `bolt_savedquery`.`id`, `bolt_savedquery`.`name`, `bolt_savedquery`.`queryText`, `bolt_savedquery`.`created` FROM `bolt_savedquery` LIMIT 21; args=()
根据您的评论,您将出现一个
SavedQuery.MultipleObjectsReturned
错误。您需要将name
字段设为唯一字段,这样您就知道在使用SavedQuery.objects.get()
时只会返回一个结果,或者可以执行类似于SavedQuery.objects.filter(name=VALUE).first()
的操作。您还可以使用.last()
来获取最近创建的一个。在相关问题 更多 >
编程相关推荐