Модели в 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}'
Вернуться на верх