Как ограничить количество бронирований в день для 1 человека. Максимум человек может забронировать 5 мест в день
Идеи закончились после цикла for ;(
class Reservation(models.Model):
computer_club = models.ForeignKey('clubs.Club', models.CASCADE, related_name='club_reservation', null=True)
seats = models.ForeignKey('clubs.Table', models.CASCADE, related_name='seats_reservation', null=True)
owner = models.ForeignKey('users.User', on_delete=models.CASCADE, related_name='owner_reservation', null=True)
time = models.DateTimeField('Введите время бронирования')
time1 = models.DateTimeField('Время окончания бронирования', blank=True, null=True)
using_time = models.PositiveSmallIntegerField('Введите на сколько часов вы садитесь', validators=[MinValueValidator(1,message='Меньше 1 нельзя!'),\
MaxValueValidator(10,message='Больше 10 нельзя!')])
class Meta:
verbose_name = 'Бронирование'
verbose_name_plural = 'Бронирование'
class ReservationSerializer(serializers.ModelSerializer):
#owner = serializers.StringRelatedField(many=False)
class Meta:
model = Reservation
fields = ('computer_club', 'seats', 'owner', 'time', 'time1', 'using_time')
def create(self, validated_data):
user = self.context.get('request').user
time = validated_data.get('time')
seats = self.context('request').data.get('seats_reservation')
reservation = Reservation.objects.create(owner=user, **validated_data)
for time in time:
time = Reservation.objects.get(id=seats.get('seats_id')).user
if time:
print('Нельзя забронировать больше 5 мест за день')
else:
return reservation
Ответы (1 шт):
Автор решения: Антон
→ Ссылка
БД можно спросить сколько текущий пользователь уже имеет бронирований https://docs.djangoproject.com/en/3.2/ref/models/querysets/#date
from django.utils import timezone
...
now = timezone.now()
count_reservation = Reservation.objects.filter(owner=user, time__date=now().date()).count()
if count_reservation == 5:
print('fail')