class Serializer(serializers.ExcelSerializer):
            field_name_1 = serializers.CharField(max_length=10, verbose_name='Field name 1')
            field_name_2 = serializers.CharField(max_length=10, verbose_name='Field name 2')

            class Meta:
                start_index = 1
                fields = ('field_name_1', 'field_name_2')
        class Serializer(serializers.ExcelSerializer):
            field_name_1 = serializers.CharField(max_length=10, verbose_name='Field name 1')
            field_name_2 = serializers.CharField(max_length=10, verbose_name='Field name 2')

            class Meta:
                start_index = 1
                fields = ('field_name_1', 'field_name_2')

            def row_extra_validation(self, index, cleaned_row):
                assert cleaned_row['field_name_1'] == 'value 1'
                assert cleaned_row['field_name_2'] == 'value 2'
        class Serializer(serializers.ExcelSerializer):
            field_name_1 = serializers.CharField(max_length=10,
                                                 verbose_name='Field name 1')
            field_name_2 = serializers.CharField(max_length=10,
                                                 verbose_name='Field name 2')

            class Meta:
                start_index = 1
                fields = ('field_name_1', 'field_name_2')

            def extra_clean_field_name_2(self, value):
                if value == 'value 2':
                    raise ValidationError('This value is not excepted.')
示例#4
0
class OrderExcelSerializer(serializers.ExcelSerializer):
    QR_SCANNED_CHOICES = (u'有', u'無')
    ACTIVE_CHOICES = ('Yes', 'No')

    shop_name = serializers.CharField(max_length=10, verbose_name='Shop Name')
    order_number = serializers.CharField(max_length=20,
                                         verbose_name='Order Number')
    quantity = serializers.IntegerField(verbose_name='Quantity')
    sale_datetime = serializers.DateField(verbose_name='Sale Datetime',
                                          date_format='%Y-%m-%d',
                                          date_format_verbose='YYYY-MM-DD')
    inspection_expired_date = serializers.DateField(
        verbose_name='Inspection Expired Date',
        date_format='%Y%m%d',
        date_format_verbose='YYYYMMDD')
    registered_date = serializers.DateField(verbose_name='Expired Date',
                                            date_format='%Y%m',
                                            date_format_verbose='YYYYMM',
                                            blank=True)
    weight = serializers.IntegerField(verbose_name='Weight',
                                      blank=True,
                                      default=0)
    qr_scanned = serializers.CharField(max_length=2,
                                       verbose_name='QR Scanned',
                                       choices=QR_SCANNED_CHOICES)
    default_checked = serializers.BooleanField(verbose_name='Default Checked')
    address = serializers.CharField(max_length=100,
                                    blank=True,
                                    verbose_name='Address')
    active = serializers.CharField(max_length=5,
                                   blank=True,
                                   verbose_name='Active',
                                   choices=ACTIVE_CHOICES,
                                   case_sensitive=False)

    def extra_clean_active(self, cleaned_value):
        return True if cleaned_value == 'Yes' else False

    class Meta:
        start_index = 1
        fields = ('shop_name', 'order_number', 'sale_datetime', 'quantity',
                  'inspection_expired_date', 'registered_date', 'weight',
                  'qr_scanned', 'default_checked', 'address', 'active')