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

时间:2018-03-07 11:33:15

标签: python django class

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

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

Trip
  

photo = models.ImageField(upload_to =“reservations /”+ get_trip_title()+“/”)#NEED FIX   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)
    def get_trip_title(self):
        return self.trip_id.title
    photo = models.ImageField(upload_to="reservations/" + get_trip_title() + "/") # NEED FIX
  

photo = models.ImageField(upload_to =“reservations /”+ str(trip_id.title)+“/”)#NEED FIX   AttributeError:'ForeignKey'对象没有属性'title'

我知道我可以使用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 ,因为我在代码的另一部分使用了它。

有没有办法在类方法之外使用self.trip_id.title(实例引用?)?

1 个答案:

答案 0 :(得分:3)

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

  for device in devices_infos['data']:
      name = device['name']