Python django查询返回错误:应为str实例,找到ValuesListQuerySet
我有一个脚本,它一个接一个地从动物列表中获取值,并用它们执行一些操作。它的工作原理如下:Python django查询返回错误:应为str实例,找到ValuesListQuerySet,python,django,list,django-queryset,Python,Django,List,Django Queryset,我有一个脚本,它一个接一个地从动物列表中获取值,并用它们执行一些操作。它的工作原理如下: list_of_animals = ["Dog", "Cat", "Fish"] for x in list_of_animals: ... class MyModel(models.Model): animal = models.CharField(max_length=25, unique=True, error_messages= {'unique':"This animal is added al
list_of_animals = ["Dog", "Cat", "Fish"]
for x in list_of_animals:
...
class MyModel(models.Model):
animal = models.CharField(max_length=25, unique=True, error_messages=
{'unique':"This animal is added already."})
timestamp = models.DateTimeField()
list_of_animals = [MyModel.objects.values_list('title', flat=True)]
代码在这个列表上循环,一次一只动物,然后结束
现在,对于下一步,我有一个这样的模型:
list_of_animals = ["Dog", "Cat", "Fish"]
for x in list_of_animals:
...
class MyModel(models.Model):
animal = models.CharField(max_length=25, unique=True, error_messages=
{'unique':"This animal is added already."})
timestamp = models.DateTimeField()
list_of_animals = [MyModel.objects.values_list('title', flat=True)]
…还有SQLite数据库中更多的动物。所以我尝试用一个查询替换手动创建的动物列表
我试图更改动物列表,如下所示:
list_of_animals = ["Dog", "Cat", "Fish"]
for x in list_of_animals:
...
class MyModel(models.Model):
animal = models.CharField(max_length=25, unique=True, error_messages=
{'unique':"This animal is added already."})
timestamp = models.DateTimeField()
list_of_animals = [MyModel.objects.values_list('title', flat=True)]
但我得到了一个错误:
其实我也尝试了很多其他的方法,但都没有成功。
您能帮我找到一种方法,用一个工作方式相同的查询替换手动创建的列表吗
谢谢大家! 试试看:
list_of_animals = list(MyModel.objects.values_list('title', flat=True))
发件人:
请注意,此方法返回ValuesListQuerySet。这个类的行为
像一张单子。大多数时候这已经足够了,但是如果你需要
实际的pythonlist对象,您可以简单地在其上调用list,这
将评估查询集
尝试:
发件人:
请注意,此方法返回ValuesListQuerySet。这个类的行为
像一张单子。大多数时候这已经足够了,但是如果你需要
实际的pythonlist对象,您可以简单地在其上调用list,这
将评估查询集
不要做动物列表=[MyModel.objects.values\u list'title',flat=True],而是做
如果在单字段列表中使用flat=True,MyModel默认情况下将返回iterable列表,如中所述:
如果只传入单个字段,还可以传入展开参数。如果为True,则意味着返回的结果是单个值,而不是一个元组。举个例子可以让区别更清楚:
不要做动物列表=[MyModel.objects.values\u list'title',flat=True],而是做
如果在单字段列表中使用flat=True,MyModel默认情况下将返回iterable列表,如中所述:
如果只传入单个字段,还可以传入展开参数。如果为True,则意味着返回的结果是单个值,而不是一个元组。举个例子可以让区别更清楚:
亩無'除非你需要一份合适的清单,否则我的答案可能更好。是的,谢谢。似乎我需要的是一份合适的清单。它为我工作;亩無'除非你需要一份合适的清单,否则我的答案可能更好。是的,谢谢。似乎我需要的是一份合适的清单。它为我工作;谢谢,非常有教育意义的帖子!几乎为我完成了这项工作,我也为未来学习;谢谢,非常有教育意义的帖子!几乎为我完成了这项工作,我也为未来学习;