0

次のような 2 つの単純なモデルがあります。

class User(models.Model):
    username = models.CharField(max_length=100) #Id is automatically generated by Django
    password = models.CharField(max_length=100)

    def __unicode__(self):
        return self.username

class File(models.Model):
    users = models.ManyToManyField(User)
    file_name = models.CharField(max_length=100)
    type = models.CharField(max_length=10)

データベースのルールで、ブリッジエンティティ(テーブル)が作成されます。私が知りたいのは、データを挿入するときに、後で使用するために取得できるように、私の場合は session_id (外部キー) を使用してデータベースを挿入することです。どうやってやるの?

4

2 に答える 2

1

ManyToMany リレーションシップにデータを追加しようとしている場合は、throughオプションを使用して結合テーブルを定義する必要があります。詳細については、こちらをお読みください。

ただし、セッション ID を保存するべきではないことに注意してください。何を達成しようとしているのでしょうか。これは、ユーザーが常に同じセッション ID を持つとは限らず、セッションに関連付けられたデータ (つまり、request.session[*]) が削除される可能性があるためです。

いずれにせよ、例は次のようになります

class User(models.Model):
    username = models.CharField(max_length=100) #Id is automatically generated by Django
    password = models.CharField(max_length=100)

    def __unicode__(self):
        return self.username

class File(models.Model):
    users = models.ManyToManyField(User, through='UserFile')
    file_name = models.CharField(max_length=100)
    type = models.CharField(max_length=10)


class UserFile(models.Model):
    user = models.ForeignKey(User)
    file = models.ForeignKey(File)
    # Should probably use CharField if you know the length
    session_id = models.TextField()
于 2013-01-08T07:49:43.793 に答える
0

あなたの質問から私が理解したことから、ドキュメントの外部キーセクションを参照することをお勧めします。 https://docs.djangoproject.com/en/dev/ref/models/fields/

例: メーカー = モデル.ForeignKey('メーカー')

于 2013-01-08T07:39:06.687 に答える