您好我想问一个问题,在我的数据库中设置一些字段。我有三个型号
模型
class Customer(models.Model):
#fields
class Entry(models.Model):
#fields
customer = models.ForeignKey(Customer, related_name='entries')
class EntryHistory(models.Model):
#fields
entry = models.OneToOne(Entry, related_name='history')
我希望获得特定客户的所有条目历史记录。不是吗
for entry in customer.entries:
try:
history.append(entry.history)
except entry.history.related.models.DoesNotExist:
pass(or continue?)
我的想法是搜索所有客户条目以及是否将历史记录添加到列表中。如果我只是在EntryHistory中添加了一个客户字段会更好吗?查询会更快吗?这将是我项目中的常见交易。但我知道在EntryHistory模型中添加客户是多余的,因为我知道客户来自输入字段。我是否应该担心,例如我有很多客户,每个客户都有很多条目?
答案 0 :(得分:2)
我希望获得特定客户的所有条目历史记录。
customer = Customer.objects.get(pk=1)
EntryHistory.objects.filter(entry__customer=customer)
Django为外键提供前向和反向查找,因此利用您可以从EntryHistory转发 - >进入 - >客户