0

我有 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”尝试它,我需要什么?

谢谢

4

1 回答 1

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)
于 2013-07-27T13:08:57.970 回答