【问题标题】:Custom save method on model - combine fields模型上的自定义保存方法 - 组合字段
【发布时间】:2013-02-12 21:42:54
【问题描述】:

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

例如,给定这个模型:

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

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

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你可以使用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/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-18
        • 2017-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-03
        • 2012-12-12
        • 1970-01-01
        相关资源
        最近更新 更多