[英]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.