如何检查模型是否有参考

时间:2018-11-16 16:46:28

标签: django

说我在django中有一个地址(想想街道地址)模型,而该模型由工作(想想工作地点)和客户(想想邮寄地址)引用。

执行查询时,是否可以仅过滤没有引用的行?

模型

class Address(models.Model):

    street = models.TextField()
    suite = models.TextField()
    city = models.TextField()
    state = models.TextField()
    county = models.TextField(default="")
    country = models.TextField(default= "USA")
    zip = models.TextField()
    notes = models.TextField()

class Customer(models.Model ):

    firstname = models.TextField(null=False)
    lastname = models.TextField(blank=True)
    address = models.ForeignKey(Address,null=True,blank=True,default=None)

class Job(models.Model):

    number=models.IntegerField(null=False)
    name=models.CharField(max_length=100,default="")
    address = models.ForeignKey(Address,null=True)

所需功能

#get all addresses that don't have a job or customer referencing it
addresses = Address.objects.filter(job_set_count = 0, customer_set_count=0)

PS

这是使用“ OneToOne”关系的方案吗?

2 个答案:

答案 0 :(得分:0)

尝试一下:

从django.db.models导入Q

addresses = Address.objects.filter(Q(job__isnull = True)&Q(customer__isnull = True))

答案 1 :(得分:0)

更改地址与客户的关系。 多个客户不可能有一个地址(根据您的地址模型类)。因此,您的模型之间的关系可以是其中之一

  1. 一个客户有多个地址。
  2. 一个客户有一个地址。