【发布时间】:2011-03-28 11:05:01
【问题描述】:
我有
class Supplier(Model) :
pass
class Customer(Model) :
pass
class Dock(Model) :
pass
class SupplierDockAccess(Model) :
supplier = ForeignKey(Supplier)
dock = ForeignKey(Dock)
class SupplierCustomerAccess(Model):
supplier = ForeignKey(Supplier)
customer = ForeignKey(Customer)
我有一个客户实例,我想获取客户有权访问的所有 Docks。客户可以通过 SupplierCustomerAccess 访问供应商,供应商可以通过 SupplierDockAccess 访问 Docks。我可以这样做:
# get the suppliers the customer has access to
supplier_customer_accesses = SupplierCustomerAccess.objects.filter(customer=customer)
suppliers = [s.supplier for s in supplier_customer_accesses]
# get the docks those suppliers have access to
supplier_dock_accesses = SupplierDockAccess.objects.filter(supplier__in=suppliers)
docks = [s.dock for s in supplier_dock_accesses]
...但是结果的码头列表包含重复项,我真的认为应该可以一口气完成。有人想展示一些强大的 django-fu 吗?
【问题讨论】:
标签: django django-models