我有一个Customer
模型,其中包含许多Location
个,即模型上有一个location_set属性,用于返回位置列表。每个Location
也有许多客户,即customer_set属性。
我有一个客户实例及其所有相应的属性。我想要做的是返回至少位于客户location_set中的所有位置的所有其他客户。有没有一种干净的方法来做到这一点,而无需手动操作查询集并对数据库进行大量调用?
class Customer(AbstractUser):
current_location = models.ForeignKey('device.Location',
null=True, blank=True, related_name='customers_present')
default_location = models.ForeignKey('device.Location',
null=True, blank=True, related_name='default_customers')
class Location(models.Model):
name = models.CharField(max_length=50, help_text="The name of the location")
customers = models.ManyToManyField(settings.AUTH_USER_MODEL,
through='customer.Membership')
class Membership(models.Model):
customer = models.ForeignKey(Customer)
location = models.ForeignKey('device.Location')
date_joined = models.DateTimeField(auto_now_add=True)
答案 0 :(得分:1)
如果没有您的模型定义,很难为您的问题提供准确的答案,如下所示:
Customer.objects.filter(location__in=your_customer_instance.location_set.all()).exclude(pk=your_customer_instance.pk)