【问题标题】:Python Complicated QueryPython 复杂查询
【发布时间】:2018-10-29 12:02:25
【问题描述】:

我有以下型号:

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)

如何使用 Preferences 表在餐厅模型中查询

例如,我需要获得对特定用户具有相同偏好的餐厅?

请任何有想法的人帮助我

非常感谢

【问题讨论】:

  • 我猜这是烧瓶和 sqlalchemy?
  • 不,它是 django 和 django rest 框架,但没关系。我需要在控制台上最后创建函数打印结果顺便说一句我为问题编辑了标签

标签: python django python-3.x django-models django-rest-framework


【解决方案1】:

如果您通过查询用户来获取用户偏好,您将获得相应用户的偏好,查询将类似于

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)

【讨论】:

    【解决方案2】:

    我们可以使用下面的代码

    user = UserPreference.objects.get(id=request.user.id)
    vegetables = user.vegetable.all() #all vegetable
    restaurant = RestaurantPreference.objects.filter(vegetable__in=vegetables)
    

    【讨论】:

      猜你喜欢
      • 2013-06-28
      • 1970-01-01
      • 2017-05-10
      • 2014-11-06
      • 2011-06-08
      • 2012-10-25
      • 2017-05-22
      • 2012-02-02
      • 2023-04-08
      相关资源
      最近更新 更多