如何将多个GenericForeignKey关系区分为一个模型



我有以下模型结构:

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)

我想知道我怎么能知道一个文件是以picture_before上传的,另一个是picture_after上传的。Uploadable不包含任何有关它的信息。

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

似乎只有一种方法可以做到这一点。您需要在泛型模型中创建一个额外的属性,以便可以持久化上下文。

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

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')

相关内容

  • 没有找到相关文章

最新更新