Моя цель - получить доступ к атрибуту подкласса, не зная заранее, какой из двух подклассов был выбран (классы с множественным выбором)
В идеале в суперклассе есть атрибут, который изменяется в зависимости от того, какой подкласс выбран..
Причина в том, что я создал формы непосредственно из подклассов и использую суперкласс в качестве точки входа для доступа к значениям.
Я знаю, что могу использовать true или false с hasattr (horse), но в идеале я спрашиваю, есть ли немного более точное решение, например, подкласс может сигнализировать суперклассу, какой подкласс был использован.
например, для продукта 8 в моем списке
subclass = getattr(Product(8), 'subclass', 0)
print(subclass)
>> Horse
или
place = Product.location
Print(place)
>> Stable
Вся «проблема» проистекает из того факта, что я создаю Продукты через Формы Подкласса, в то время как большая часть более поздней логики идет сверху вниз, начиная с Product
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)