0

我有一个通用场景,但我将其具体化以使其易于回答。

我有模型图像,其中包含名称、url、相机、格式、created_date、uploaded_date 等字段。(这些是 EXIF 信息。本来希望将这些字段作为标签,但我担心它会变得太复杂。)

我有另一个模型文件,它有一个外键图像字段和一个外键用户字段。(如果两个不同的用户拥有相同的图像,则将有一个图像对象和两个文件对象用于指向该图像的用户。)

现在有两个任务我需要执行。1-找到用户拥有的所有不同的相机。(或格式等) 2- 按特定相机过滤所有用户文件。

对于这种情况,我无法找出更有效的结构。

非常感谢您的帮助。

4

1 回答 1

1

您的 File 模型实际上是自定义的多对多关系。我会在 Image 模型中使用 ManyToMany 到用户模型。

class Image(models.Model):
   ...
   users = models.ManyToManyField(...)

查询它会像这样:

a) 查找用户拥有的相机

Image.objects.values('camera').filter(users=the_user_in_subject).distinct()

b) 按相机过滤用户图像

Image.objects.filter(users=the_user_in_subject, camera='camera type')

此外,如果您的文件模型也有其他字段,您可以使用through选项https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships

于 2013-07-30T23:03:37.940 回答