基于Djang对象计数的一对一关系过滤

2024-09-30 10:27:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有4个与餐馆有关的模型,我很难返回正确的结果。在

这些模型是AdminEnteredRestaurantRestaurantPhotoMenu,其定义如下:

class AdminEnteredRestaurant(models.Model):
    restaurant = models.OneToOneField(Restaurant)
    ...

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

class Photo(models.Model):
    restaurant = models.ForeignKey(Restaurant)
    ...

class Menu(models.Model):
    restaurant = models.OneToOneField(Restaurant)
    ...

我想要的查询是过滤所有AdminEnteredRestaurant,只返回那些只有1个或更少的Photo和0个菜单的AdminEnteredRestaurant。我该怎么做?在


Tags: name模型model定义modelsrestaurantmaxclass
1条回答
网友
1楼 · 发布于 2024-09-30 10:27:38

我会用Countannotatelte和{a4}来做类似的事情

from django.db.models import Count
results = AdminEnteredRestaurant.objects.annotate(num_photos=Count('restaurant__photo')) \
                                        .filter(num_photos__lte=1) \
                                        .filter(restaurant__menu__isnull =True)

相关问题 更多 >

    热门问题