下面是我的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',
)
class图像(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将替换为当前文件名长度
创建模型时,Django默认会为其创建一个id = models.AutoField(primary_key=True)
自动递增主键字段。该键将用于模型关系。因此,在Image
模型的category
字段中,您必须传递Category
的整数id
值作为默认值,例如,如果PORTRAITURE
的id为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)
请注意,我还删除了一些不必要的引号。