【发布时间】:2019-06-10 15:12:44
【问题描述】:
我正在开发一个 Django 应用程序,我需要在用户完成操作时记录并保留他们的详细信息。
打个比方,假设我有一个类似的地址模型:
class Address(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
street = models.CharField(max_length=100)
town = models.CharField(max_length=50)
...
等等。用户可以随时编辑他们的地址。
当他们完成一项操作时,我需要创建一张收据,详细说明他们当时的地址。
如果我创建了一个带有address 字段的Receipt 模型作为ForeignKey,如下所示:
class Receipt(models.Model):
ref_num = models.UUIDField(default=uuid.uuid4, editable=False)
date = models.models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
address = models.ForeignKey(Address, on_delete=models.CASCADE)
收据在创建时是正确的,但如果用户随后更改了他们的地址,那就不正确了。
创建Receipt 模型的解决方案是否复制Address 模型中的所有字段,以便保留它们?
class Receipt(models.Model):
ref_num = models.UUIDField(default=uuid.uuid4, editable=False)
date = models.models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
street = models.CharField(max_length=100)
town = models.CharField(max_length=50)
...
我假设有一种更简洁、更优雅的方式来实现这一点。我基本上需要在给定的时间创建用户地址的快照,而无需创建重复的Address,因为这些是用户可编辑的。
【问题讨论】:
标签: python mysql django database