【发布时间】:2019-05-13 01:41:39
【问题描述】:
我的目标是在事先不知道选择了两个子类中的哪一个的情况下访问子类的属性(多选类)
理想情况下,超类中有一个属性会根据选择的子类而变化。
原因是我直接从子类创建了表单,并使用超类作为访问值的入口点。
我知道我可以对 hasattr(horse) 使用 true 或 false,但理想情况下我会问是否有更简洁的解决方案,例如 SubClass 可以向 SuperClass 发出信号,使用哪个 SubClass。
例如对于我列表中的产品 8
subclass = getattr(Product(8), 'subclass', 0)
print(subclass)
>> Horse
或
place = Product.location
Print(place)
>> Stable
整个“问题”源于我通过子类表单创建产品这一事实,同时后面的大部分逻辑都是自上而下的,从产品开始
class Product(models.Model):
product_name = models.Charfield(max_length=20)
class Car(Product):
engine = models.Charfield(max_length=20)
location = models.Charfield(default="Garage", max_length=20, editable=False)
product = models.OneToOneField(Product, parent_link=True, on_delete=models.CASCADE)
class Horse(Product):
saddle_model = models.Charfield(max_length=20)
location = models.Charfield(default="Stable", max_length=20, editable=False)
product = models.OneToOneField(Product, parent_link=True, on_delete=models.CASCADE)
【问题讨论】:
标签: django inheritance django-models subclass multiple-choice