Я пытаюсь реплицировать схему данных для данных, видимых здесь . Каждый запуск имеет местоположение с одиночной площадкой, моя модель в настоящее время определена, как показано ниже:
class Location(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=255, blank=True, default="")
country_code = models.CharField(max_length=255, blank=True, default="")
def __unicode__(self):
return self.name
class Meta:
verbose_name = 'Location'
verbose_name_plural = 'Locations'
class Pad(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=255, blank=True, default="")
info_url = models.URLField(blank=True, null=True)
wiki_url = models.URLField(blank=True, null=True)
map_url = models.URLField(blank=True, null=True)
location = models.ForeignKey(Location, related_name="pads", blank=True, on_delete=models.CASCADE)
def __unicode__(self):
return self.name
class Meta:
verbose_name = 'Pad'
verbose_name_plural = 'Pads'
Если я запрашиваю запуск из оболочки Django или если я сериализую ( видно здесь ) запуск с Django Restframework, он вытягивает все пады , возможные для местоположения вместо один пэд, которому назначен запуск.
Пример:
"location": {
"id": 16,
"name": "Cape Canaveral, FL, USA",
"country_code": "USA",
"pads": [
{
"id": 62,
"name": "Space Launch Complex 37B, Cape Canaveral, FL",
"info_url": null,
"wiki_url": "https://en.wikipedia.org/wiki/Cape_Canaveral_Air_Force_Station_Space_Launch_Complex_37",
"map_url": "http://maps.google.com/maps?q=28.531700,-80.564950"
},
{
"id": 84,
"name": "Space Launch Complex 40, Cape Canaveral, FL",
"info_url": "",
"wiki_url": "https://en.wikipedia.org/wiki/Cape_Canaveral_Air_Force_Station_Space_Launch_Complex_40",
"map_url": "http://maps.google.com/maps?q=28.56194122,-80.57735736"
}
]
Как получить отношения, чтобы ТОЛЬКО правильно отображать только один пэд, назначенный для запуска, вместо того, чтобы возвращать все возможные пэды для местоположения, чтобы моя реализация соответствовала исходной функциональности, как показано в первой ссылке?
EDIT:
Хорошо, теперь данные находятся в базе данных в правильном формате, как показано в оболочке, запуск имеет одну площадку из местоположения. Оставшаяся проблема заключается в том, как сериализовать его, чтобы он возвращался точно так же, как исходный источник данных, с помощью launch-> location-> single-pad:
>>> launch = Launch.objects.first()
>>> launch
<Launch: Falcon Heavy | STP-2>
>>> launch.pad
<Pad: Launch Complex 39A, Kennedy Space Center, FL>
>>> launch.pad.location
<Location: Kennedy Space Center, FL, USA>
>>> launch.pad.location.pad.all()
<QuerySet [<Pad: Launch Complex 39A, Kennedy Space Center, FL>, <Pad: Launch Complex 39B, Kennedy Space Center, FL>]>