如何声明和调用模型方法在django中导航关系?

时间:2013-07-27 11:33:31

标签: django python-2.7 django-models django-templates

我有3个模特

class Room(models.Model):

    house = models.ForeignKey('Property', related_name='rooms')
    beds = models.IntegerField(max_length=10)

class Property(models.Model):

......

    def free_places():
        places = 0
        for r in self.rooms:
            x = r.beds - ((r.tenant).size())
            places = places + x
        return places


class Profile(model.Models):

    room = models.ForeignKey(Room, blank=True, null=True, related_name='tenant')

首先,我想知道free_places方法应该是:free_places(self)还是free_places()。我认为它也有一些错误,但我不知道如何测试它,所以这里的问题是如何调用该方法?它的功能是否正确? 我想从django模板中调用它。

从“./manage.py shell”试试它我需要什么?

由于

1 个答案:

答案 0 :(得分:1)

它应该是free_places(self):

您可以将方法定义为属性,然后从模板中调用该方法:

https://docs.djangoproject.com/en/dev/topics/db/models/#model-methods

该代码块中的最后一个示例

def _free_places(self):
    places = 0
    for r in self.rooms:
        x = r.beds - ((r.tenant).size())
        places = places + x
    return places
free_places = property(_free_places)