Как создать поле внутри поля в модели в django?

#python #django #django-models #model #field

#python #django #django-модели #Модель #поле

Вопрос:

У меня есть модель следующим образом.

У меня есть 4 поля выбора для людей, которые (одиночные, семейные, семейные и групповые). Пользователи могут выбрать любое. Но проблема в том, что когда пользователь выбирает family, он также должен выбрать количество детей и взрослых, которые отправляются в поездку.

Теперь, как я могу создать поле в модели таким образом, чтобы у меня было 4 варианта, но для семейного выбора мне также нужна опция выбора «нет взрослых» и «нет детей». То же самое касается выбора группы.

Семейное изображение
Семейное изображение

Одиночный
Одиночный

Теперь моя модель:

 class CustomBooking(models.Model):
    PEOPLE_CHOICES = (
            ('Single', 'Single',),
            ('Couple', 'Couple',),
            ('Family', 'Family',),
            ('Group', 'Group'),
        )
    AGE_GROUP = (
            ('18-35 yrs', '18-35 yrs',),
            ('36-50 yrs', '36-50 yrs',),
            ('51-64 yrs', '51-64 yrs',),
            ('65  yrs', '65  yrs',),
        )
    
    people = models.CharField(max_length=64, choices=PEOPLE_CHOICES, default='Couple')
    geographical_area = models.CharField(max_length=255)
    bookedfor = models.DateField(blank=True)
    age_group = models.CharField(max_length=64, choices=AGE_GROUP, default='18-35 yrs')
    
    trip_title = models.CharField(max_length=255)
    description = RichTextField()
    created_at = models.DateTimeField(auto_now_add=True)


    class Meta:
        ordering = ('created_at',)
 

Ответ №1:

Просто добавьте поля и присвоите им значение по умолчанию.

 class CustomBooking(models.Model):
    ...
    number_of_children = models.IntegerField(default=0)
    number_of_adults = models.IntegerField(default=0)
 

Комментарии:

1. Это может сработать. Но правильный ли это подход?? Я имею в виду, что в моей серверной CRM, даже если я выбираю одного или пару, я все равно не могу выбрать ни одного из детей или взрослых, что не то, что мы хотим.