Несколько опций в Django Rest Framework - PullRequest
0 голосов
/ 03 сентября 2018
class ReservationSerializer(serializers.ModelSerializer):
    class Meta:
        model = Booking
        fields = [
            'pk',
            'persons',
            'date',
            'time',
            'table_number',
            'restaurants',
            'menu'
            ]

Это мой класс сериализатора, и я хочу, чтобы в поле меню было несколько полей флажков Ниже мой класс модели, а здесь меню ManyToManyField. Но я подумал, что это не правильный путь.

class Booking(models.Model):
    persons = models.IntegerField()
    date = models.DateField()
    time = models.TimeField()
    table_number = models.IntegerField()
    restaurants = models.ForeignKey('sb_comp.Restraurant', on_delete=models.CASCADE)
    menu = models.ManyToManyField('sb_comp.Menu')

    def __str__(self):
        return '%s' % self.restaurants

1 Ответ

0 голосов
/ 03 сентября 2018

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

   class RepairOrder(models.Model):
        '''create a repair order entry by number'''
        ro_number = models.CharField(max_length=6, help_text='Enter six digit repair order number.')
        date_added = models.DateTimeField(auto_now_add=True)
        tech = models.CharField(max_length=20, choices=TECHS, default='none',
       help_text='Technician')
        writer = models.CharField(max_length=15, choices=WRITERS, default='none',
        help_text='Service Writer')
        status = models.CharField(max_length=20, choices=STATUSES, default='unassigned',
        help_text='Work Status')
        promise_time = models.CharField(max_length=8, default='WAIT',
        help_text='Promise Time')
        job_type = models.ManyToManyField(WorkType)
        additional_details = models.TextField(null=True, help_text='Additional Information on Work to be Done')

Надеюсь, вы получили изображение. Теперь, чтобы оно было переключателем или флажками, вам нужно поработать над виджетами формы. Пример:

class SomeForm(forms.ModelForm):
    class Meta:
        model = ABC
        widgets = {'type': forms.RadioSelect}

class SomeForm(forms.ModelForm):
    some_field = forms.CharField(choices=MEDIA_CHOICES,
                                 widget=forms.CheckboxSelectMultiple)
    class Meta:
        model = XYZ

для получения дополнительной информации, вы можете увидеть этот фрагмент

...