Я делаю программу, которая помогает лог-миссии в игре. В каждой из этих миссий я хотел бы выбрать нескольких космонавтов, которые будут вместе с ним из таблицы астронавтов. Это нормально, когда мне нужен только один, но как я могу подойти к нескольким внешним ключам в поле?Ссылка на несколько внешних ключей в Django Model
В настоящее время я использую двоичную строку, которая указывает, какие астронавты должны быть связаны с миссией (1 относится к Джебу, но не Биллу, Бобу или Валу, а 0001 означает только Val), с первой цифрой, указывающей астронавт с идентификатором 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"
Я видел сообщение о «промежуточной связующей таблице», чтобы сохранить список членов экипажа, но это также не является идеальным.
Спасибо!
Можете ли вы использовать «ManyToManyField»? – jape