Модели в django. много ко многим - лучший вариант?
Я пытаюсь сделать свой первый сайт на django. В основном я делаю сайт для проверки расписания автобусов в моем сельском районе. Я думаю, что лучше всего сделать две модели, одну, где определены все автобусные станции, а другую, где установлен маршрут, для каждого маршрута нужны две станции (отправная и конечная). Мне интересно, как лучше всего связать две модели.
class BusStations(models.Model):
bus_stations = models.CharField(max_length=80)
bus_stations_identifier = models.IntegerField()
def __str__(self):
return self.bus_stations
class Routes(models.Model):
origin_station = models.ManyToManyField(
BusStations, related_name='origin_station')
destination_station = models.ManyToManyField(
BusStations, related_name='destination_station')
data = models.JSONField()
slug = models.SlugField(unique=True, null=True)
def __str__(self):
return f'{self.origin_station} - {self.estacion_destino}'
До сих пор я делал это с помощью отношений ManytoMany, но это создает проблемы. Например, я не могу вернуть станции отправления и назначения как str в модели маршрута. Я бы также хотел, чтобы это был slug.
Спасибо за аванс.
Скорее всего, origin_station
и destionation_station
указывают на одну станцию, поэтому тогда вы используете ForeignKey
[Django-doc], а не ManyToManyField
:
class BusStation(models.Model):
bus_station = models.CharField(max_length=80)
bus_station_identifier = models.IntegerField()
def __str__(self):
return self.bus_station
class Route(models.Model):
origin_station = models.ForeignKey(
BusStation, related_name='starting_routes'
)
destination_station = models.ForeignKey(
BusStation, related_name='ending_routes'
)
data = models.JSONField()
slug = models.SlugField(unique=True, null=True)
def __str__(self):
return f'{self.origin_station} - {self.destionation_station}'