我想有效地检查商店商品的任何其他名称是否共享了某个名称
当然,我可以循环浏览商店中的所有商品并比较它们的名称,但是我敢肯定,有一个contains()方法可以用来命名。也许使用filter()?但是如何?答案太多了,我无法解决我的独特问题
models.py
...
class Item(models.Model):
item_name = models.CharField(max_length=200)
...
class Shop(models.Model):
shop_name = models.CharField(max_length=200)
items = models.ManyToManyField('Product')
...
views.py
...
def check(name):
if name in Shop.items.filter(name)
# do something
...
我的代码似乎没有发现商店中有任何同名商品(即使我可以证明有)
答案 0 :(得分:0)
您只需编写一个exists查询,而不是在整个列表中进行搜索。使用存在效率更高。官方文档还指定了以下内容:
注意:如果您只想确定是否存在至少一个结果,请不要使用它。使用exist()更有效。
因此您的查询将变为:
Item.objects.filter(item_name__iexact=name).exists()
答案 1 :(得分:0)
尝试一下
def check(name):
query_set = Shop.objects.fileter(items__item_name__icontains=name)
# do something