ORM «как» запрос в Django Python - PullRequest
0 голосов
/ 26 сентября 2018

ключевые слова = пончик работает с keyword__name__in=Donut, но мне нужно получить результат keyword__name__in=Don

views.py

items=ItemVariation.objects.filter(item__restaurant__id = i['restaurant']['id'],keyword__name__in=keyword,keyword__mood__moods=mood).select_related() 
# items=ItemVariation.objects.filter(item__restaurant__id = i['restaurant']['id'],keyword__name__contains=keyword,keyword__mood__moods=mood).select_related() # it is returning null
# items=ItemVariation.objects.filter(item__restaurant__id = i['restaurant']['id'],keyword__name__icontains=keyword,keyword__mood__moods=mood).select_related() 

models.py

class Keyword(models.Model):
    name=models.CharField(max_length=500,unique=True)
    image = models.ImageField(upload_to='keywords/', blank=True, null=True)
    mood=models.ManyToManyField(Mood,blank=True)
    def __str__(self):
        return str(self.name)

class ItemVariation(models.Model):
    restaurant=models.ForeignKey(Restaurant,on_delete=models.CASCADE)
    item=models.ForeignKey(Item,on_delete=models.CASCADE)
    price=models.IntegerField(blank=True,null=True,default=0)
    item_code=models.CharField(max_length=500)
    keyword= models.ManyToManyField(Keyword)
    image=models.ImageField(upload_to='dishes/', blank=True, null=True)

У меня есть этот запрос, мне нужно использовать ключевое слово__name__in =% ключевое слово% какНапример,

Я использую PostgreSQL параметр базы данных, который я передаю для этого /? keys = Donut & mood = Dating

результат, когда яЯ использую ключевое слово__name__in

"items": [
            {
                "id": 7,
                "item": {
                    "name": "Donut",
                    "short_description": "Donuts"
                },
                "price": 0,
                "item_code": "test",
                "image": "/media/dishes/download_3_kcE78IS.jpeg",
                "restaurant": 1,
                "keyword": [
                    3
                ]
            }
        ],

результат, когда я использую icontains

"items": [],

1 Ответ

0 голосов
/ 26 сентября 2018

Вы ищете contains (или icontains)

keyword__name__contains=keyword
...