2017-06-22 80 views
0

假设我们有两个模型,AB。型号A有一个upload_to路径,在里面,我也想在同一条路径上保存模型为B的字段。这是我想做的事:Django调用模型中的另一个模型的upload_to

def random_path(instance, filename): 
    #creating random path each time it's called 

class A(models.Model): 
    imageA = models.ImageField(upload_to=random_path) # Randomly generated path 
    def create_documentfiles(self): 
     imageB = # Image 
     saveImageB = DocumentImage(imagefile=imageB) 
     saveImageB.imagefile.upload_to = # Should be same path as imageA 
     saveImageB.save() 

class B(models.Model): 
    imagefile = models.ImageField() 

我可以模型定义upload_to=random_path,但它会给我不同的路径。所以,我想模型B被定义在模型A。不知道这是否是可能的。 Django文档没有提到类似于我所问的任何内容。

回答

1

这只是非常简单。为此目的使用_meta。您可以使用get_field方法来获取模型的字段,如imageA。然后使用对象符号访问该字段的任何属性。

upload_to_attr = ModelName._meta.get_field('foo').upload_to 

更通用:

attr_value = ModelName._meta.get_field('foo').attr_name 
+0

我很抱歉,但'getupload = A._meta.get_field(imageA).upload_to' **的内部B **模型给了我一个“'A '没有'_meta'成员“错误。是否有任何额外的步骤使其工作? –

+0

您使用的是哪个版本的django?参数imageA将在引号中。依次从https://docs.djangoproject.com/en/1.11/ref/models/meta/ –

+0

我正在使用最新版本。 imageA在我的代码中被引用,我忘记包含它们。如果在'model.py'中,我应该输入** A **吗? –

相关问题