0

Djangoに2つのテーブルがあります。1つはfileファイル情報を持ち、2つ目はshare共有情報を持ち ます:テーブルfiles_idへの外部キーShareです:次に、共有テーブルにfiles_idを持つファイル情報を(ファイルテーブルから)取得します。どうやってやるの?

#models.py
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 = 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()

users_idがlog_idであるfile_informationを取得し、shared_dateも取得したいと思います。log_idを次のように取得します。log_id = request.user.id

4

2 に答える 2

0

モデルを投稿しなかった理由がわかりません。

おそらくあなたは次のようなものが欲しいでしょう:

File.objects.exclude(share=None)
于 2013-01-21T09:14:56.240 に答える
0

plural namesforuserとの混乱を取り除くために、モデルにいくつかの変更を加えましたfile。すでにデータベースを持っているので、名前を付けたと思います。

#models.py
class File(models.Model):
    user = models.ForeignKey(User, db_column="users_id")
    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 = models.TextField()
    flag = models.TextField()
    #delete_date = models.CharField(max_length=100, null=True, blank=True)

class Share(models.Model):
    user = models.ForeignKey(User,db_column="users_id")
    file = models.ForeignKey(File, db_column="files_id")
    shared_user_id = models.IntegerField()
    shared_date = models.TextField()

したがって、上記の2つのモデルから、オブジェクトは他のユーザーと共有できる1つのモデルFileによって作成されているように見えます。Userあなたはfiles_idどういうわけか持っているので、次のクエリはうまくいくはずです

file = File.objects.get(id=files_id)
# Assuming one file is shared only ones by an user
# otherwise you should use filter instead of get
shared_file = Share.objects.get(file=file, user=request.user)

なぜTextField保管に使用しているのDateTimeですか?を使用する必要がありますDateTimeField

于 2013-01-21T18:53:46.237 に答える