Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用单个主键而不是复合主键对以下场景建模?_Sql_Django - Fatal编程技术网

Sql 如何使用单个主键而不是复合主键对以下场景建模?

Sql 如何使用单个主键而不是复合主键对以下场景建模?,sql,django,Sql,Django,假设我正在模拟一个田径项目。主键是日期、赛道和比赛编号 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 = m

假设我正在模拟一个田径项目。主键是日期、赛道和比赛编号

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()   

现在假设我希望为用户提供一个表单来查找特定事件。他们将输入日期、比赛编号和赛道。现在在结果中,我希望提供事件结果以及温度。通常,这对于SQL连接来说是微不足道的。Django目前不太支持复合键。我如何用一个自动递增的主键为这个用例建模,这将更加Django友好。

一起使用
unique\u
。 通过这种方式,您可以在所有内容上使用递增ID,但当它们组合在一起时,它们会形成一个唯一的键

您可以在类的元类中一起定义
unique\u

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")
我会使用一个,我不知道“django”,但不是重点,当日期因恶劣天气而更改时,您的数据库会出现问题(可能不是django框架),重点是永远不要使用可能更改属性作为(或在PK内)