如何在models.ForeignKey.limit_choices_to中使用自我字段?

时间:2014-04-27 18:05:35

标签: python django django-models

我有一个带外国人的django模型。我想依赖于该模型的另一个字段的内容来限制它的选择。

此代码有效:

class PhysicalProperty(models.Model):
    property_quantity = models.ForeignKey(Quantity)    
    default_unit = models.ForeignKey(MeasurementUnits, limit_choices_to = {'quantity': 1 )

但它需要来自MeasurementUnits的所有记录,其中MeasurementUnits.quantity = 1.我需要将查询设置为MeasurementUnits.quantity = PhysicalProperty.property_quantity。

此代码无效

class PhysicalProperty(models.Model):
    property_quantity = models.ForeignKey(Quantity)    
    default_unit = models.ForeignKey(MeasurementUnits, limit_choices_to = {'quantity': property_quantity )

1 个答案:

答案 0 :(得分:0)

你不能在课堂上使用自我。 self适用于类的实例。

你可以使用init方法

class PhysicalProperty(models.Model):
    property_quantity = models.ForeignKey(Quantity)    
    default_unit = models.ForeignKey(MeasurementUnits)

    def __init__(self, *args, **kwargs)
        super(self, PhysicalProperty).__init__(*args, **kwargs)
        self.default_unit = self.property_quantity

这样,每次执行physical_property = PhysicalProperty()时,physical_property.default_unit都会与同一对象的property_quantity相同。