模型上的自定义保存方法 - 组合字段

时间:2013-02-12 21:42:55

标签: python django django-models

我想在一个模型上创建一个自定义保存方法,该模型结合了其中两个字段的值,其中一个是存储在外键关系中的值。

例如,鉴于此模型:

class Post(models.Model):
    text = charfield()
    date = datefield()
    user = ForeignKey(other model)
    key = integerfield()
    unique = charfield()

我希望能够将名为unique的字段保存为外键中的用户用户名和键字段(自动递增整数字段)的组合。这样的事情可能吗?我搜索了类似的问题但找不到任何问题。

2 个答案:

答案 0 :(得分:0)

当然,在您至少保存一次模型之前,您将没有钥匙。因此,您的保存方法需要调用超类保存,获取密钥,设置唯一字段,然后再次保存。

答案 1 :(得分:0)

您可以使用django post_save信号在第一次保存后修改数据

应该是这样的:

from django.db.models.signals import post_save
@receiver(post_save, sender=Post)
def my_handler(sender, **kwargs):
   obj = kwargs['instance']
   obj.unique = obj.user + str(obj.key)
   obj.save()

Doc on signals:https://docs.djangoproject.com/en/dev/topics/signals/