2012-07-07 80 views
4

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

问题

求索以下数据模型

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

我想(业务员,年)被视为一个主键。也就是说,如果我做

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() 

问题

  • 是这种方法好还是 “合适的人”?
  • 什么是字段键的最佳数据类型?就我个人而言,我想拥有128位的som字段,但这不是我所知。

回答

0

这看起来像一个很好的解决方案。