Django:指定模型的正确方法(元组列表)

时间:2016-11-17 14:13:30

标签: python django database-design

我对目前的型号不满意,想问一下是否有更好/更好的方法来达到相同的效果。

我想要什么?

  • 包含许多列表的对象A.每个列表都包含元组,第一个条目是日期对象,第二个条目是浮点数或整数。
  • 如果删除A,也应删除B.如果我删除B我想要一个空列表。

我是如何尝试完成它的:

class TimeValueIntSequence(models.Model):
    pass

class TimeValueFloatSequence(models.Model):
    pass

class TimeValueInt(models.Model):
    time = models.DateField()
    value = models.IntegerField()
    sequence = models.ForeignKey(TimeValueIntSequence, models.CASCADE, blank=False, null=False)

class TimeValueFloat(models.Model):
    time = models.DateField()
    value = models.FloatField()
    sequence = models.ForeignKey(TimeValueFloatSequence, models.CASCADE, blank=False, null=False)

class A(models.Model):
    field1 = models.OneToOneField(TimeValueIntSequence, models.SET_NULL, blank=True, null=True, related_name='field1')
    field2 = models.OneToOneField(TimeValueIntSequence, models.SET_NULL, blank=True, null=True, related_name='field2')
    field3 = models.OneToOneField(TimeValueFloatSequence, models.SET_NULL, blank=True, null=True, related_name='field3')

出了什么问题?

  • 方法似乎效率低下。
  • 如果删除A类对象,则不会删除序列。

你有任何反馈意见吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

我找不到更好的解决方案,所以我最终使用了JSON。如果您遇到同样的问题,请确保使用DjangoJSONEncoder来处理日期时间对象。

备注:如果Django可以抽象并使您能够编辑任意数据类型,只要它们是可序列化的,那就太好了。如果你知道怎么做,请告诉我。