0

我有两个这样的模型:

class File(models.Model):
    users = models.ForeignKey(User)
    file_name = models.CharField(max_length=100)
    type = models.CharField(max_length=10)
    source = models.CharField(max_length=100)
    start_date = models.TextField()
    end_date = models.TextField()
    duration = models.TextField()
    size_overview = models.IntegerField()
    size = models.TextField()
    flag = models.TextField()
    #delete_date = models.CharField(max_length=100, null=True, blank=True)

class Share(models.Model):
    users = models.ForeignKey(User)
    files = models.ForeignKey(File)
    shared_user_id = models.IntegerField()
    shared_date = models.TextField()

我将登录用户的用户 ID 设为:log_id = request.user.id

我想检索当前登录用户共享的文件。

首先我在 Share 模型中查询:

Share.objects.filter(users_id=log_id)

users_id属性包含共享文件的用户的 ID。现在我知道了 log_id 用户共享的 files_id。如何检索文件信息。我想展示file_name, size and source. 我该怎么做?

4

3 回答 3

0

您可以遍历反比关系:

File.objects.filter(shares__users__id = log_id)

顺便说一句:File 对象中的 users 字段呢?它与 Share 对象中的 users 字段有何关系?

于 2013-01-23T06:53:42.570 回答
0

如果您的查询集假设同一用户有多个 Share 实例:

shares = Share.objects.filter(users_id=log_id)

您可以遍历它并访问每个实例的文件:

for share in shares:
    print share.files.file_name
    print share.files.type
    print share.files.source
于 2013-01-23T07:03:48.843 回答
0

尝试这个...

File.objects.filter(id__in= Share.objects.filter(shared_user_id = log_id).values_list('files', flat=True))
于 2013-01-23T07:10:07.387 回答