Django“get”方法不起作用

时间:2014-06-12 19:58:39

标签: python django

我尝试使用" get"从我的数据库中获取一行。 Python / Django中的方法。我使用的模型是

class SavedQuery(models.Model):
    name = models.CharField(max_length = 512)
    queryText = models.CharField(max_length = 2048)
    created = models.DateTimeField(auto_now_add=True)

现在,我已在该数据库中保存了一些值,确保所有值都是唯一的。所以现在我想在给出名称时获取queryText的值。我尝试使用以下代码:

    entry = SavedQuery.objects.get(name = query_name) 
    #query_name is an input to the function, and I've verified it is correct

但是,输入行不起作用。我通过浏览器收到500错误,而我运行服务器的终端显示任何错误消息。 DEBUG输出对我来说也是不可理解的。

我的创可贴解决方案是使用SavedQuery.objects.all()然后检查名称字段,但我在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=()

1 个答案:

答案 0 :(得分:1)

根据您的评论,您提出了SavedQuery.MultipleObjectsReturned错误。您需要将name字段设为一个唯一字段,这样您就知道在使用SavedQuery.objects.get()时只能获得一个结果,或者您可以执行SavedQuery.objects.filter(name=VALUE).first()之类的操作。您还可以使用.last()来获取最近创建的文件。