代码之家  ›  专栏  ›  技术社区  ›  Bigbob556677

如何检查模型是否有引用

  •  0
  • Bigbob556677  · 技术社区  · 6 年前

    假设我在django中有一个地址(思考街道地址)模型,它被jobs(思考工作站点)和客户(思考邮件地址)引用。

    执行查询时,是否可以仅筛选没有对其引用的行?

    模型

    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)
    

    聚苯乙烯

    这会是使用“一对一”关系的场景吗?

    2 回复  |  直到 6 年前
        1
  •  0
  •   wc_coder    6 年前

    试试这个:

    从django.db.models导入q

    addresses=address.objects.filter(q(作业isnull=true)和q(客户isnull=true)

        2
  •  0
  •   Muhammad Faizan Fareed    6 年前

    更改地址与客户的关系。 不可能多个客户有一个地址(根据您的地址模型类)。所以你们模特之间的关系

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