Я получаю эту ошибку при запуске команды migrate. недопустимый литерал для int () с основанием 10: 'Portraiture'. Ниже мой код. Django версия = 1.11 - PullRequest
0 голосов
/ 29 февраля 2020

Ниже приведены классы в моем models.py.

Категория класса (models.Model):

TRAVEL = 'TR'
WEDDING = 'WE'
PORTRAITURE = 'PR'

CATEGORIES = (
    ('TRAVEL', 'travel'),
    ('WEDDING', 'wedding'),
    ('PORTRAITURE', 'portraiture'),
)

category = models.CharField(
    max_length=32,
    choices=CATEGORIES,
    default='PORTRAITURE',
)

Изображение класса (models.Model):

image = models.ImageField((""), upload_to='images/', height_field=None, width_field=None, max_length=None, blank=True)

image_name = models.CharField(max_length=60)

image_description = models.TextField()

location = models.ForeignKey(Location, null=True)

category = models.ForeignKey(Category, default='PORTRAITURE')

pub_date = models.DateTimeField(default=datetime.now, blank=True)

tags = models.ManyToManyField(tags)

Игнорировать приведенную ниже часть.

Имеет два необязательных аргумента для проверки: max_length и allow_empty_file. Если это предусмотрено, это гарантирует, что имя файла не превышает заданную длину, и что проверка будет успешной, даже если содержимое файла пусто.

Чтобы узнать больше об объекте UploadedFile, см. Документацию по загрузке файлов.

Когда вы используете FileField в форме, вы также должны не забыть привязать данные файла к форме.

Ошибка max_length относится к длине имени файла. В сообщении об ошибке для этого ключа% (max) d будет заменено максимальной длиной имени файла, а% (length) d будет заменено текущей длиной имени файла

1 Ответ

0 голосов
/ 29 февраля 2020

При создании модели Django по умолчанию создаст id = models.AutoField(primary_key=True) поле первичного ключа с автоинкрементом для нее. Этот ключ будет использоваться для модельных отношений. Таким образом, в поле category модели Image необходимо передать целочисленное id значение Category для значения по умолчанию, например, если идентификатор PORTRAITURE равен 3, тогда:

category = models.ForeignKey(Category, default=3)

Но поскольку у вас есть фиксированный список категорий, вам не нужно создавать отдельную модель, просто они в модели Image выглядят следующим образом:

class Image(models.Model):
    TRAVEL = 'TR'
    WEDDING = 'WE'
    PORTRAITURE = 'PR'

    CATEGORIES = (
        (TRAVEL, 'travel'),
        (WEDDING, 'wedding'),
        (PORTRAITURE, 'portraiture'),
    )

    image = models.ImageField(upload_to='images/', height_field=None, width_field=None, max_length=None, blank=True)
    image_name = models.CharField(max_length=60)
    image_description = models.TextField()
    location = models.ForeignKey(Location, null=True)
    category = models.CharField(
        max_length=2,
        choices=CATEGORIES,
        default=PORTRAITURE,
    )
    pub_date = models.DateTimeField(default=datetime.now, blank=True)
    tags = models.ManyToManyField(tags)

Обратите внимание, что я также удалил некоторые ненужные кавычки.

...