繁体   English   中英

如何在方法外部引用类实例-Python

[英]How to reference class instance outside method - Python

我正在编写Django应用,我想为每个不同的Trip创建不同的目录。

这段代码不起作用(使用方法):

class TripPhoto(models.Model):
    def __str__(self):
        return self.trip_id.title
    trip_id = models.ForeignKey(Trip, on_delete=models.CASCADE)
    def get_trip_title(self):
        return self.trip_id.title
    photo = models.ImageField(upload_to="reservations/" + get_trip_title() + "/") # NEED FIX

照片= models.ImageField(upload_to =“ reservations /” + get_trip_title()+“ /”)#需要修复TypeError:get_trip_title()缺少1个必需的位置参数:'self'

此代码也不起作用(使用属性):

class TripPhoto(models.Model):
    def __str__(self):
        return self.trip_id.title
    trip_id = models.ForeignKey(Trip, on_delete=models.CASCADE)
    photo = models.ImageField(upload_to="reservations/" + str(trip_id.title) + "/") # NEED FIX

照片= models.ImageField(upload_to =“ reservations /” + str(trip_id.title)+“ /”)#需修复AttributeError:'ForeignKey'对象没有属性'title'

我知道我可以使用self.trip_id.title ,因为我在代码的另一部分中使用了它。

有什么方法可以在类方法之外使用self (实例引用?)?

在模型外部声明函数,实例将通过第一个参数传递给它:

def get_trip_title(instance, filename):
    # file will be uploaded to MEDIA_ROOT/reservations/title/<filename>
    return 'reservations/{0}/{1}'.format(instance.trip_id.title, filename)

class TripPhoto(models.Model):
    photo = models.FileField(upload_to=get_trip_title)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM