首页 > 解决方案 > 运行迁移命令时出现此错误。以 10 为基数的 int() 的无效文字:“肖像”。下面是我的代码。Django 版本=1.11

问题描述

下面是我的models.py 中的类。

类类别(模型。模型):

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

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

category = models.CharField(
    max_length=32,
    choices=CATEGORIES,
    default='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.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 将替换为当前文件名长度

标签: djangopython-3.xdjango-modelstable-relationships

解决方案


创建模型时,Django默认会为其创建一个id = models.AutoField(primary_key=True)自动递增的主键字段。此密钥将用于模型关系。因此,在Image模型的category字段中,您必须传递一个整id数值 aCategory作为默认值,例如,如果PORTRAITUREid 为 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)

请注意,我还删除了一些不必要的引号。


推荐阅读