Как создать два поля выбора, используя внешний ключ из другой модели? - PullRequest
0 голосов
/ 06 мая 2019

Я хочу создать модель, которая будет содержать маршруты между двумя местами, но я не знаю, как обрабатывать поля выбора в этой модели, также мой выбор должен содержать только места (деревня, город и город)

Модель моего места:

class Place(CoreModel):
    TOWN = 'town'
    CITY = 'city'
    REGION = 'region'
    DISTRICT = 'district'
    VILLAGE = 'village'

    ROLE_CHOICES = (
        (REGION, 'область'),
        (CITY, 'місто'),
        (DISTRICT, 'район'),
        (TOWN, 'село міського типу'),
        (VILLAGE, 'село')
    )

    name = models.CharField(max_length=128, verbose_name='Place name', )
    slug = models.SlugField(max_length=128, blank=True, null=True)
    parent = models.ForeignKey('self', on_delete=models.CASCADE, blank=True, null=True)
    role = models.CharField(max_length=20, choices=ROLE_CHOICES, null=True, blank=True)

Модель моего маршрута:

class Routes(CoreModel): 
    start_point = models.ForeignKey(Place, on_delete=models.CASCADE)
    end_point = models.ForeignKey(Place, on_delete=models.CASCADE)

но это не работает

1 Ответ

1 голос
/ 06 мая 2019

Если у вас есть модель с двумя ForeignKey s для одной и той же модели, вы должны дать хотя бы одному из них related_name, иначе django не знает, как их дифференцировать в обратном отношении:

class Routes(CoreModel):
    start_point = models.ForeignKey(Place, on_delete=models.CASCADE, related_name="departing_routes")
    end_point = models.ForeignKey(Place, on_delete=models.CASCADE, related_name="arriving_routes")
...