[英]Reference multiple foreign keys in Django Model
我正在開發一個有助於記錄游戲任務的程序。 在每個任務中,我希望能夠從宇航員表中選擇一些與之一起工作的宇航員。 當我只需要一個時,這很好,但是如何在一個字段中使用多個外鍵呢?
我目前使用“二進制”字符串指定要與任務關聯的宇航員(1表示Jeb,而不是Bill,Bob或Val,0001表示Val),其中第一個數字指定ID為1的宇航員等等。 這可行,但感覺很笨拙。
這是有問題的兩個表的model.py。
class astronauts(models.Model):
name = models.CharField(max_length=200)
adddate = models.IntegerField(default=0)
experience = models.IntegerField(default=0)
career = models.CharField(max_length=9, blank=True, null=True)
alive = models.BooleanField(default=True)
def __str__(self):
return self.name
class Meta:
verbose_name_plural = "Kerbals"
class missions(models.Model):
# mission details
programid = models.ForeignKey(programs, on_delete=models.SET("Unknown"))
missionid = models.IntegerField(default=0)
status = models.ForeignKey(
missionstatuses, on_delete=models.SET("Unknown"))
plan = models.CharField(max_length=1000)
# launch
launchdate = models.IntegerField(default=0)
crewmembers = models.IntegerField(default=0)
# recovery
summary = models.CharField(max_length=1000, blank=True)
recdate = models.IntegerField(default=0)
def __str__(self):
return str(self.programid) + '-' + str(self.missionid)
class Meta:
verbose_name_plural = "Missions"
我看到了一個有關“中間鏈接表”的帖子,用於存儲乘員列表,但這也不理想。
謝謝!
這是Django的ManyToManyField的用例。 更改任務的適當字段:
class missions(models.Model):
crewmembers = models.ManyToManyField('astronauts')
您可以從宇航員模型一側訪問此文件,如下所示:
jeb = astronaut.objects.get(name='Jebediah Kerman')
crewed_missions = jeb.missions_set.all()
或者從任務方面來看,像這樣:
mission = missions.objects.order_by('?')[0]
crew = mission.crewmembers.all()
萬一這對您來說是一個問題,這將在數據庫中創建另一個表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.