Python 将ImageField url与django中的另一个对象关联
我有两个模型Python 将ImageField url与django中的另一个对象关联,python,django,Python,Django,我有两个模型 class Core: def logo_path(instance, filename): pattern = re.compile(r'\s+') filename = re.sub(pattern, '', filename) return 'images/core/logos/core_{0}/{1}'.format(instance.pk, filename) name = models.CharFiel
class Core:
def logo_path(instance, filename):
pattern = re.compile(r'\s+')
filename = re.sub(pattern, '', filename)
return 'images/core/logos/core_{0}/{1}'.format(instance.pk, filename)
name = models.CharField(db_index=True, max_length=255)
logo = models.ImageField(upload_to=logo_path, blank=True, null=True)
及
我想用核心对象中徽标的路径填充CoreRoom对象中的logo_url。
我该怎么做?我怀疑这是否必要。您始终可以使用
my\u core\u room.core.logo.url
访问它,但最简单的方法是覆盖CoreRoom
模型的.save()
方法:
class CoreRoom(Room):
...
def save(self, *args, **kwargs):
self.logo_url = self.core.logo.url
super(CoreRoom, self).save(*args, **kwargs)
logo\u url
模型字段也可以转换为属性方法,因为不需要保存logo url信息,因为它已经存储在数据库中。例如:
class CoreRoom(Room):
core = models.ForeignKey(Core, on_delete=models.CASCADE, null=True)
# remove logo url model field
@property
def logo_url(self):
return self.core.logo.url
class CoreRoom(Room):
core = models.ForeignKey(Core, on_delete=models.CASCADE, null=True)
# remove logo url model field
@property
def logo_url(self):
return self.core.logo.url