0

私はこのような2つのモデルを持っています:

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.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

同じユーザーの共有インスタンスが複数あると仮定してクエリセットを持っている場合:

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 に答える