【问题标题】:Composite primary key, Google app engine (django)复合主键,谷歌应用引擎(django)
【发布时间】:2012-07-07 16:15:03
【问题描述】:

我在谷歌应用引擎上使用 django nonrel/djangoappengine。不能直接指定复合主键。但是,应该可以模仿这种行为。我想知道什么是最好的方法。

问题

考虑以下数据模型

class AccumuatedSales(models.Model):
    salesman = models.ForeignKey(Salesman)
    year = models.Postiveinteger()
    totalSales = models.PositiveInteger()

我希望 (salesman, year) 被视为主键。也就是说,如果我这样做了

asby1 = AccumulatedSales(salesman='Joe', year=2010, totalSales=100)
asby1.save()
asby2 = AccumulatedSales(salesman='Joe', year=2010, totalSales=200)
asby2.save()

“表”AccumulatedSales 应包含 一个 行。所以第二次保存会覆盖第一次。

可能的解决方案

class AccumuatedSales(models.Model):
    key = models.CharField(primary_key=True,, default=None, editable=False)
    salesman = models.ForeignKey(Salesman)
    year = models.Postiveinteger()
    totalSales = models.PositiveInteger()

    def save(self):
        self.key = someHashFunction(self.salesman_id, self.year)
        super(AccumulatedSales, self).save()

问题

  • 这种方法是好的还是“正确的”?
  • 字段键的最佳数据类型是什么?就我个人而言,我希望有 som 128 位字段,但据我所知,这是不可用的。

【问题讨论】:

    标签: django google-app-engine uniqueidentifier composite-primary-key hash-function


    【解决方案1】:

    这看起来是个不错的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 2011-01-28
      • 1970-01-01
      相关资源
      最近更新 更多