我试图创建课程运动与科之间的关系。每个部分都必须选择一个运动之王(班级运动由普通/公共汽车/火车等扩展)。而且我得到的错误是“字段定义了与模型的关系'运动',它既没有安装,也没有抽象。”有办法吗?从我读到现在,没有好办法,或者我错了?
我的课科:
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)
答案 0 :(得分:1)
您不能拥有抽象基类的外键,因为该类没有数据库表。在您的示例中:将有一个数据库表,其中包含Plain
个实例的行,但没有Locomotion
的表。
通常的方法是使用Generic Foreign Key指向其中一个子类。