0

陸上競技のイベントをモデリングしているとします。主キーは、date、track、および race_no です。

class Event(models.Model):
    date = models.DateField()
    race_no = models.IntegerField()     
    track = models.CharField(max_length = 4)
    temperature = models.IntegerField()

class Race(models.Model):
    date = models.DateField()
    race_no = models.IntegerField()     
    track = models.CharField(max_length = 4)
    athlete_id = models.ForeignKey(Athlete)
    finishing_pos = models.IntegerField()   

ここで、ユーザーが特定のイベントを検索するためのフォームを提供したいとします。日付、race_no、トラックを入力します。結果では、イベントの結果と温度を提供したいと思います。通常、これは SQL JOIN では些細なことです。現在、Django は複合キーをあまりサポートしていません。このユースケースを単一の自動インクリメント主キーでモデル化するにはどうすればよいですか?

4

2 に答える 2

2

を使用しunique_togetherます。このようにして、すべての ID をインクリメントできますが、それらを組み合わせると一意のキーが形成されます。

unique_togetherクラスの Meta クラスで定義します。

class Race(models.Model):
    date = models.DateField()
    race_no = models.IntegerField()     
    track = models.CharField(max_length = 4)
    athlete_id = models.ForeignKey(Athlete)
    finishing_pos = models.IntegerField()

    class Meta:
        unique_together = ("date", "race_no", "track")
于 2013-05-21T08:31:27.750 に答える
0

「サロゲートキー」を使用しますが、 「django」は​​わかりませんが、ポイントではありません。悪天候のために日付が変わると、データベースに問題が発生します(おそらくdjangoフレームワークではありません)、ポイントは変化する可能性のある属性を (または PK 内で) 使用しないでください。

于 2013-10-05T20:05:49.057 に答える