слишком длинное значение для символа типа Django Factory - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть класс OrderDataFactory ниже.

class OrderDataFactory(factory.django.DjangoModelFactory):

    class Meta:
        model = models.OrderData

    order = factory.SubFactory(OrderFactory)
    category = 'single',
    quantity = 75.6
    price_per_kg = 10.5
    sku = factory.SelfAttribute('crop_data.id')

    class Params:
        crop_data = factory.SubFactory(CropFactory)

models.py

class OrderData(models.Model):
    CATEGORY_CHOICES = (
        (SKUCategory.SINGLE, 'Single Sku'),
        (SKUCategory.COMBO, 'Combo Sku'),
    )
    sku = models.PositiveIntegerField(null=False, validators=[MinValueValidator(1)])
    order = models.ForeignKey(Order, on_delete=models.CASCADE)
    quantity = models.FloatField()
    price_per_kg = models.FloatField()
    category = models.CharField(choices=CATEGORY_CHOICES, max_length=8)
    class Meta:
        unique_together = (('sku', 'order', 'category'),)

Category.py

class SKUCategory:
    SINGLE = 'single'
    COMBO = 'combo'

я получаю следующую ошибку.

django .db.utils.DataError: слишком большое значение для изменяющегося символа типа (8)

даже максимальная длина для категории равна 6.

1 Ответ

1 голос
/ 26 апреля 2020

У вас есть запятая в конце этой строки category = 'single',. Это определяет category как кортеж ('single',), который, вероятно, преобразуется в строку длиной 11 символов. Удалите запятую, чтобы использовать строку

category = 'single'
...