0

我有以下模型结构:

class Uploadable(models.Model):    
    file = models.FileField('Datei', upload_to=upload_location, storage=PRIVATE_FILE_STORAGE)
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')


class Inspection(models.Model):
    ...
    picture_before = GenericRelation(Uploadable)
    picture_after = GenericRelation(Uploadable)

我想知道如何判断一个文件是作为 a 上传的,picture_before而另一个文件是作为picture_after. Uploadable不包含任何有关它的信息。

谷歌搜索了一段时间,但没有找到合适的解决方案。

感谢您的支持!

4

1 回答 1

0

似乎只有一种方法可以做到这一点。您需要在通用模型中创建一个附加属性,以便您可以保留上下文。

从这篇博文中得到了这个想法:

class Uploadable(models.Model):
   
    # A hack to allow models have "multiple" image fields
    purpose = models.CharField(null=True, blank=True)
    
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

class Inspection(models.Model):
    ...
    images = GenericRelation(Uploadable, related_name='inspections')
    ...
    
    @property
    def picture_before(self):
        return self.images.filter(purpose='picture_after')
    
    @property
    def picture_after(self):
        return self.images.filter(purpose='picture_after')
于 2020-11-23T13:09:08.120 回答