Django 字段采用模型的值-class
Django fields taking value of model-class
所以我有两个模型Transaction
和Update
,记录一些对象的交易和更新。然后我想要一个 table Timeline
,它基本上记录了 transaction
或 update
和 time_updated
的 pk
值。所以我想象这样一个Timeline
table
class Timeline
model = <taking value of type of model: Transaction or Update, etc.>
identifing_num = models.CharField(...)
time_updated = models.DatetimeField(...)
我想实现的很简单,就是把其他所有有实际意义的记录按时间顺序记录下来。我当然可以查询这两个模型(Transaction
和 Update
),做一个 mergesort
,然后得到一个按时间排序的 queryset
,但我只是想知道这个 Timeline
东西可以写下来
您可以使用 GenericForeignKey.
或者用null=True
在Transaction
和Update
中添加两个外键。可以通过 属性:
访问具体模型
class TimeLine(models.Model):
transaction = models.ForeignKey(Transaction, null=True)
update = models.ForeignKey(Update, null=True)
identifing_num = models.CharField(...)
time_updated = models.DatetimeField(...)
@property
def model(self):
return self.transaction or self.update
所以我有两个模型Transaction
和Update
,记录一些对象的交易和更新。然后我想要一个 table Timeline
,它基本上记录了 transaction
或 update
和 time_updated
的 pk
值。所以我想象这样一个Timeline
table
class Timeline
model = <taking value of type of model: Transaction or Update, etc.>
identifing_num = models.CharField(...)
time_updated = models.DatetimeField(...)
我想实现的很简单,就是把其他所有有实际意义的记录按时间顺序记录下来。我当然可以查询这两个模型(Transaction
和 Update
),做一个 mergesort
,然后得到一个按时间排序的 queryset
,但我只是想知道这个 Timeline
东西可以写下来
您可以使用 GenericForeignKey.
或者用null=True
在Transaction
和Update
中添加两个外键。可以通过 属性:
class TimeLine(models.Model):
transaction = models.ForeignKey(Transaction, null=True)
update = models.ForeignKey(Update, null=True)
identifing_num = models.CharField(...)
time_updated = models.DatetimeField(...)
@property
def model(self):
return self.transaction or self.update