我有两个这样的模型:
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.
我怎么能这样做?
答案 0 :(得分:0)
您可以遍历反向关系:
File.objects.filter(shares__users__id = log_id)
BTW:File对象中的users字段怎么样?它如何与Share对象中的users字段相关?
答案 1 :(得分: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
答案 2 :(得分:0)
试试这个......
File.objects.filter(id__in= Share.objects.filter(shared_user_id = log_id).values_list('files', flat=True))