如何使用另一个模型的外键创建两个选项字段?

2024-04-20 08:18:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个模型来保存两个地方之间的路线,但是我不知道如何处理这个模型中的choices字段,而且我的选择应该只保存地方(村庄、城市和城镇)

我的位置模型:

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)

但它不起作用


Tags: name模型trueonmodels地方placedelete
1条回答
网友
1楼 · 发布于 2024-04-20 08:18:04

当一个模型有两个ForeignKey到同一个模型时,必须至少给其中一个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")

相关问题 更多 >