0

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

例如,给定这个模型:

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

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

4

2 回答 2

0

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

于 2013-02-12T21:50:21.453 回答
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()

关于信号的文档:https ://docs.djangoproject.com/en/dev/topics/signals/

于 2013-02-12T21:50:57.007 回答