Как получить минимальное значение экземпляра модели django - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь получить минимальное или минимальное значение поля модели в модели django. Поле room_Price. Поэтому я пытаюсь получить минимум значения этого поля для каждого экземпляра модели. Моя модель выглядит следующим образом:

class Hotels(models.Model):
    name = models.CharField(max_length=255) 
    address = models.CharField(max_length=255)
    city = models.CharField(max_length=255)
    country = models.CharField(max_length=255)
    mobile_number = models.CharField(max_length=12)
    created_at = models.DateTimeField(default=timezone.now)
    last_modified = models.DateTimeField(auto_now=True)
    description = models.TextField()
    slug = models.SlugField(unique=True)
    property_photo = models.ImageField(default='default.jpg', upload_to='hotel_photos')
    star_rating = models.PositiveIntegerField()
    contact_person = models.ForeignKey(UserProfile, on_delete = models.CASCADE, null=True, blank=True,) 
class Room(models.Model):
    hotel = models.ForeignKey(Hotels,on_delete = models.CASCADE, null=True, blank=True,)
    room_photo = models.ImageField(default='default.jpg', upload_to='room_photos')
    room_Name = models.CharField(max_length = 200)
    room_details = models.CharField(max_length = 500)
    room_Capacity = models.PositiveIntegerField(default = 0)
    slug = models.SlugField(unique=True)
    # guest_numbers = models.IntegerField(default=0)
    room_Price= models.PositiveIntegerField(default = 0)
    total_Rooms = models.PositiveIntegerField(default=0)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    user = models.ForeignKey(UserProfile, on_delete=models.CASCADE, null=True, blank=True,)

Подробнее Из приведенных выше моделей в отеле может быть как можно больше номеров. Теперь я хочу получить самый дешевый номер для каждого отеля. Я пытался использовать Hotels.objects.aggregate(min_price=Min('room__room_Price')), но он получает общую минимальную цену всех номеров отеля. Пожалуйста, помогите

1 Ответ

0 голосов
/ 17 марта 2020

Вы можете попробовать добавить ordering к вашей модели, а затем найти самую низкую цену в al oop:

class Room(models.Model):
    ...
    class Meta:
        ordering = ['room_Price']

И отфильтровать в просмотрах:

lowest_prices = {}
for i in Hotels.objects.all():
    price = Room.objects.filter(hotel=i.id)[0].room_Price
    lowest_prices[i.name] = price
print(lowest_prices)

Я положил цены в диктовке, но вы можете делать с ней все, что захотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...