我正在制作一个程序来帮助记录游戏中的任务。在每一次任务中,我都希望能够从宇航员表中选出一些与之相伴的宇航员。当我只需要一个外键时,这是很好的,但是我如何处理一个字段中的多个外键呢?在
我目前使用的是一个“二进制”字符串,它指定哪些宇航员将与任务相关联(1表示Jeb,但不是Bill、Bob或Val,0001表示只有Val),第一个数字指定id为1的宇航员,依此类推。这很管用,但感觉很笨重。在
这是模型.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的用例。更改任务的相应字段:
您可以从宇航员模型侧访问,如下所示:
^{pr2}$或者从任务方面来说:
这将在数据库中创建另一个表,以防这对您造成某种问题。在
相关问题 更多 >
编程相关推荐