Сложный запрос Python - PullRequest
       11

Сложный запрос Python

0 голосов
/ 29 октября 2018

У меня есть следующие модели:

class Restaurant(models.Model):
    name = models.CharField(max_length=100)


class UserPreference(models.Model):
    user = models.OneToOneField(User, on_delete=CASCADE)
    fruit = models.MantToManyField(Fruit)
    vegetable = models.MantToManyField(Vegetable)

class RestaurantPreference(models.Model):
    restaurant = models.OneToOneField(Restaurant, on_delete=CASCADE)
    fruit = models.MantToManyField(Fruit)
    vegetable = models.MantToManyField(Vegetable)

как я могу сделать запрос в модели ресторана, используя таблицы предпочтений

например, мне нужно получить рестораны, которые имеют те же предпочтения для специалиста?

пожалуйста, у кого-нибудь есть идея, помогите мне

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Мы можем использовать ниже код

user = UserPreference.objects.get(id=request.user.id)
vegetables = user.vegetable.all() #all vegetable
restaurant = RestaurantPreference.objects.filter(vegetable__in=vegetables)
0 голосов
/ 29 октября 2018

Если вы получаете предпочтения пользователя, опрашивая пользователя, вы получите предпочтения соответствующего пользователя, и запрос будет выглядеть как

user_preference = UserPreference.objects.get(user=user)
fruits = user_preference.fruit.all() # user's fruit preferences
vegetables = user_preference.vegetable.all() # user's vegetable preferences

Теперь вы получили все фруктовые и овощные предпочтения пользователя. Отсюда вы можете запросить предпочтения ресторана, используя django ORM

restaurant_preferences = RestaurantPreference.objects.filter(fruit__in=fruits, vegetable__in=vegetables)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...