finish
This commit is contained in:
@@ -7,7 +7,8 @@ class Activity(models.Model):
|
||||
"""
|
||||
title = models.CharField(max_length=100, verbose_name="活动标题")
|
||||
description = models.TextField(verbose_name="活动详情")
|
||||
banner = models.ImageField(upload_to='activities/banners/', verbose_name="活动Banner图")
|
||||
banner = models.ImageField(upload_to='activities/banners/', verbose_name="活动Banner图", null=True, blank=True)
|
||||
banner_url = models.URLField(verbose_name="活动Banner链接", null=True, blank=True, help_text="可直接填写图片链接,若同时上传图片,将优先显示上传的图片")
|
||||
start_time = models.DateTimeField(verbose_name="开始时间")
|
||||
end_time = models.DateTimeField(verbose_name="结束时间")
|
||||
location = models.CharField(max_length=100, verbose_name="活动地点")
|
||||
@@ -15,6 +16,24 @@ class Activity(models.Model):
|
||||
is_active = models.BooleanField(default=True, verbose_name="是否启用")
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
|
||||
|
||||
def clean(self):
|
||||
from django.core.exceptions import ValidationError
|
||||
if not self.banner and not self.banner_url:
|
||||
raise ValidationError("Banner图片和Banner链接必须至少填写一项")
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
self.clean()
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
@property
|
||||
def display_banner_url(self):
|
||||
"""
|
||||
获取Banner显示的URL,优先使用上传的图片
|
||||
"""
|
||||
if self.banner:
|
||||
return self.banner.url
|
||||
return self.banner_url
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
|
||||
Reference in New Issue
Block a user