簡體   English   中英

抽象類作為外鍵

[英]Abstract class as foreign key

我試圖在類 Locomotion 和 Section 之間創建關系。 每個部分都必須選擇一個運動之王(運動類由平原/公共汽車/火車等擴展)。 我收到關於“字段定義與模型‘運動’的關系的錯誤,該模型要么未安裝,要么是抽象的。”。 有什么辦法嗎? 從我讀到現在,沒有好的方法可以做到,還是我錯了?

我的班級:

class Section(RoadElements):
    locomotion = models.ForeignKey(Locomotion, on_delete=models.CASCADE)
    def __init__(self, *args, **kwargs):
        super(Section, self).__init__(*args, **kwargs)

    def __str__(self):
        return self.name

它擴展了類 RoadElements,也是抽象的。

我對運動的定義:

class Locomotion(models.Model):
    transportation_firm_name = models.CharField(max_length=200)
    transportation_number = models.CharField(max_length=200)
    departure_date_time = models.DateTimeField()
    arrival_date_time = models.DateTimeField()
    reservation = models.BooleanField(default=False)

    class Meta:
        abstract = True

和類擴展,例如:

class Plain(Locomotion):
    seat_number = models.CharField(max_length=200)
    class_section = models.CharField(max_length=200)

您不能擁有抽象基類的外鍵,因為該類沒有數據庫表。 在您的示例中:將有一個數據庫表,其中包含用於Plain實例的行,但沒有用於Locomotion表。

執行此操作的常用方法是使用通用外鍵指向子類之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM