【问题标题】:django: auto insert rows into databasedjango:自动将行插入数据库
【发布时间】:2012-09-17 07:29:37
【问题描述】:

我有一个 CUSTOMER 表和一个 CUSTOMER_PAYMENT 表(带有属性客户、金额、到期日期和已付款)。我希望当我在 CUSTOMER 中插入一个值时,会自动生成 CUSTOMER_PAYMENT 中的值。这就像每月的帐单信息

在 CUSTOMER 中插入客户 A 时

CUSTOMER_PAYMENT
____________________________________
|CUSTOMER|AMOUNT|     DUE   | PAID  |
|  A     | 100  | 2011-01-15| False |
|  A     | 100  | 2011-02-15| False |
|  A     | 100  | 2011-03-15| False |

这是怎么做到的?

Django 中没有触发器。我尝试了谷歌,但我找不到方法。

【问题讨论】:

  • 您如何知道为每个客户创建的金额和到期日?
  • 我有一个不同的表,比如说一个客户有一个外键的 PLAN。嗯,暂时无所谓。我仍在处理在不同表中自动插入行

标签: mysql sql django


【解决方案1】:

两种方式

  • 在 post_save 信号中编写代码
  • 覆盖 save() 方法

信号

post_save.connect(CUSTOMER_post_save, sender = CUSTOMER , 
                 instance = instance, create = create) 

def CUSTOMER_post_save(sender, instance, **kwargs):
        if create:
            cd = CUSTOMER_PAYMENT()
            cd.amount = ....
            cd.save()

覆盖

class CUSTOMER(model.Model):
    ...    
    def save(self, *args, **kwargs):
        is_new = self.pk is None
        super(yourModel, self).save(*args, **kwargs)
        if is_new:
            cd = CUSTOMER_PAYMENT()
            cd.amount = ....
            cd.save()

【讨论】:

    【解决方案2】:

    Post Save Signals 可能是您正在寻找的东西

    【讨论】:

      猜你喜欢
      • 2014-07-15
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      • 1970-01-01
      相关资源
      最近更新 更多