无法访问Django的OneToOneField的子级?

时间:2018-07-10 05:38:58

标签: django

我正在尝试访问OneToOneField的子项,但出现错误。

class Products(models.Model):
    unique_id=models.CharField(max_length=13,unique=True)
    product_full_name=models.CharField(max_length=50,null=True)
    child_name=models.CharField(max_length=15,null=True)# name of the model connected by OneToOneField in lowercase
    def __str__(self):
        return str(self.product_full_name)

    def selling_price(self):
        child=self.child_name
        return getattr(self,child+'_set').all().first().selling_price


class Product1(models.Model):
     product=models.OneToOneField(Products)
     selling_price=models.FloatField()
     ......

class Product2(models.Model):
     product=models.OneToOneField(Products)
     selling_price=models.FloatField()
     ......

class Product3(models.Model):
     product=models.OneToOneField(Products)
     selling_price=models.FloatField()
     ......

当我尝试访问get_selling_price()方法时,对于连接到Product1模型的产品模型,出现错误“产品对象没有任何属性product1_set”。

1 个答案:

答案 0 :(得分:1)

如果您的孩子的名字是product1,请尝试

return getattr(a,child).selling_price