如何在方法-Python外部引用类实例
我正在编写Django应用程序,我想为每一次不同的如何在方法-Python外部引用类实例,python,django,class,Python,Django,Class,我正在编写Django应用程序,我想为每一次不同的旅行创建不同的目录 此代码不起作用(使用方法): photo=models.ImageField(上传到=“预订/”+获取行程标题()+“/”)#需要修复 TypeError:get_trip_title()缺少1个必需的位置参数:“self” 此代码也不起作用(使用属性): photo=models.ImageField(上传到=“预订/”+str(旅行id.title)+“/”)#需要修复 AttributeError:“ForeignKey
旅行创建不同的目录
此代码不起作用(使用方法):
photo=models.ImageField(上传到=“预订/”+获取行程标题()+“/”)#需要修复
TypeError:get_trip_title()缺少1个必需的位置参数:“self”
此代码也不起作用(使用属性):
photo=models.ImageField(上传到=“预订/”+str(旅行id.title)+“/”)#需要修复
AttributeError:“ForeignKey”对象没有属性“title”
我知道我可以使用self.trip\u 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)
def get_trip_title(实例,文件名):
#文件将上载到MEDIA_ROOT/reservations/title/
返回'reservations/{0}/{1}'。格式(instance.trip_id.title,文件名)
课堂照片(模型.模型):
照片=模型.FileField(上传到=获取旅行标题)
在模型外部声明函数,实例将与第一个参数一起传递给它:
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)
def get_trip_title(实例,文件名):
#文件将上载到MEDIA_ROOT/reservations/title/
返回'reservations/{0}/{1}'。格式(instance.trip_id.title,文件名)
课堂照片(模型.模型):
照片=模型.FileField(上传到=获取旅行标题)
你的答案不完全是我想要的,但它对我非常有效,所以请投票:)。但我想可能没有办法调用类似于self
outside-method的东西。你的答案并不完全是我想要的,但它对我非常有效,所以请投票:)。但是我想可能没有办法调用像self
这样的外部方法。问题是upload\u to参数是在类初始化时传递(并计算)的。当时,根本没有TripPhoto的实例,因此,没有自我,没有旅行id,也没有旅行标题。cosider因不需要而更改设计(或者,不要使用图像字段存储图像)@Mr.Nun。事实上,无碱者的回答很好,是的。显然,Imagefield能够使用一个“callable”来获取实例和文件名,它独立于TripPhoto实例。然而。关于您的问题,仍然无法按您希望的方式引用实例“self”。问题是upload_to参数是在类初始化时传递(并计算)的。当时,根本没有TripPhoto的实例,因此,没有自我,没有旅行id,也没有旅行标题。cosider因不需要而更改设计(或者,不要使用图像字段存储图像)@Mr.Nun。事实上,无碱者的回答很好,是的。显然,Imagefield能够使用一个“callable”来获取实例和文件名,它独立于TripPhoto实例。然而。关于您的问题,仍然无法按照您希望的方式引用实例“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)