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