0

您好,我想问一个关于在我的数据库中设置一些字段的问题。我有三个模型

楷模

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 模型中添加客户是多余的,因为我知道客户来自输入字段。如果我有很多客户并且每个客户都有很多条目,我应该担心吗?

4

1 回答 1

2

我想获取特定客户的所有条目历史记录。

customer = Customer.objects.get(pk=1)
EntryHistory.objects.filter(entry__customer=customer)

Django 为外键提供正向和反向查找,因此您可以从 EntryHistory -> Entry -> Customer 进行利用

于 2013-11-06T07:16:48.777 回答