Django数据库字段用于更好的查询

时间:2013-11-06 07:14:48

标签: database django models django-queryset

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

模型

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

1 个答案:

答案 0 :(得分:2)

  

我希望获得特定客户的所有条目历史记录。

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

Django为外键提供前向和反向查找,因此利用您可以从EntryHistory转发 - >进入 - >客户