Изменение поведения модели Django с помощью __getattr __

Я пытаюсь изменить поведение модели Django, чтобы позволить мне получить доступ к свойствам внешнего ключа напрямую от родителя, например

cache.part_number  
vs  
cache.product.part_number

Я попытался переопределить метод __ getattr __ следующим образом, но я получаю ошибку рекурсии, когда пытаюсь получить доступ к свойствам внешнего ключа

class Product(models.Model):
    part_number = models.CharField(max_length=10)
    ...

class Cache(models.Model):
    product = models.ForeignKey(Product)
    ...

    def __getattr__(self, name):
        value = getattr(self.product, name, None)
        if value:
            return value
        else:
            raise AttributeError

Что я делаю не так?

5
задан drjeep 21 September 2010 в 06:59
поделиться