Django Models Manager用于在字段中保存自定义处理的数据

时间:2011-02-02 01:16:52

标签: django django-models

这里的菜鸟。我有一个模型类,我想保存在该表的一个字段中处理的东西。我试图使用ModelManager,但不知道它是否可行或如何。

我想在这里为每个帖子保存一个自定义网址。所以我想在PostManager类中有一个方法来计算某些东西的哈希值(比如当前时间)并将其保存为url。我在这里找不到任何语法帮助。

class Post (models.Model):
    name = models.CharField(max_length=1000, help_text="required, name of the post")
    description = models.TextField(blank=True)
    created_datetime = models.DateTimeField(auto_now_add=True, editable=False)
    modified_datetime = models.DateTimeField(auto_now=True, editable=False)
    custom_hashed_url = models.CharField(unique=True, max_length=1000, editable=False)

def save(self, *args, **kwargs):
        #How to refer to the custom_hashed_url in the Post class?
        super(Model, self).save()

1 个答案:

答案 0 :(得分:3)

如果您希望将网址与其他信息一起保存在数据库中,则需要将其作为字段显示在模型中。

将网址更改为相应的字段类型,并将其“可编辑”属性设置为False,就像使用日期时间字段一样。这将阻止它出现在表格中。

然后您可以覆盖模型的保存方法(see Django docs),以便计算帖子的网址并在保存实例时自动添加它!

Model managers用于与许多实例或实例集一起使用的“模型级别”交互。在这种情况下,您试图操纵单个实例。我们使用一个字段将数据存储在记录的数据库中,并使用一种方法(在这种情况下覆盖内置方法以挂钩默认行为)来计算字段的值。

祝你好运!