Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:基于一对多关系筛选记录_Python_Django_Django Models - Fatal编程技术网

Python Django:基于一对多关系筛选记录

Python Django:基于一对多关系筛选记录,python,django,django-models,Python,Django,Django Models,我有以下几种型号 class User(models.Model): name = models.CharField(max_length=255) ... class InsuranceProfile(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) ... class ProductExpertiseMaster(models.Model):

我有以下几种型号

class User(models.Model):
    name = models.CharField(max_length=255)
    ...

class InsuranceProfile(models.Model):
       user = models.ForeignKey(User, on_delete=models.CASCADE)
       ...


class ProductExpertiseMaster(models.Model):
    class Meta:
        db_table = 'product_expertise_master'

    name = models.CharField(max_length=255)

    main_category = models.CharField(max_length=255)


class UserProductExpertise(models.Model): 
    user = models.ForeignKey(User, on_delete=models.DO_NOTHING)
    product_expertise = models.ForeignKey(ProductExpertiseMaster, on_delete=models.DO_NOTHING)

所以我想做的是,我想根据不同的字段过滤记录,其中一些属于用户模型&其中一些属于
InsuranceProfile
模型。我正在根据运行良好的用户&
InsuranceProfile
模型过滤记录。现在,我想再添加一个过滤器,它将基于
userproductexperties
模型。我想获得所有保险配置文件,其中包含用户详细信息,这些用户详细信息与
userproductexperties
模型中的产品专业知识条目具有某些匹配条件。任何帮助都将不胜感激。

您可以通过以下方式尝试:


它将返回在
userproductexperties
model中有条目的所有用户。对于查询,您需要使用模型名称的所有小写字母(即
userProductExperience
),并在其末尾添加
\uu isnull

您可以使用以下方法进行类似尝试:


它将返回在
userproductexperties
model中有条目的所有用户。对于查询,您需要使用模型名称的所有小写字母(即
userproductexperties
),并在其末尾添加
\u isnull

我认为您应该在继续之前对模型进行一些更改

UserProductExperties模型是ProductExpertiesMaster和用户之间的桥接表,它提供了多对多关系。若不向UserProductExperties模型添加其他字段,则可以删除该字段并在ProductExpertiesMaster模型中定义用户关系

如果您更愿意为该关系使用单独的模型,请在_delete=models.DO_上将其更改为models.CASCADE

下面是一个具有多对多关系的示例:

class User(models.Model):
    name = models.CharField(max_length=255)

class InsuranceProfile(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    content = models.CharField(("Content"), max_length=500)


class ProductExpertiseMaster(models.Model):
    class Meta:
        db_table = 'product_expertise_master'

    name = models.CharField(max_length=255)

    main_category = models.CharField(max_length=255)
    user = models.ManyToManyField(User, verbose_name=("Users"), related_name="expertises")
要筛选查询,请执行以下操作:

InsuranceProfile.objects.filter(user__expertises__isnull=False)

我认为你应该在继续之前对你的模型做一些修改

UserProductExperties模型是ProductExpertiesMaster和用户之间的桥接表,它提供了多对多关系。若不向UserProductExperties模型添加其他字段,则可以删除该字段并在ProductExpertiesMaster模型中定义用户关系

如果您更愿意为该关系使用单独的模型,请在_delete=models.DO_上将其更改为models.CASCADE

下面是一个具有多对多关系的示例:

class User(models.Model):
    name = models.CharField(max_length=255)

class InsuranceProfile(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    content = models.CharField(("Content"), max_length=500)


class ProductExpertiseMaster(models.Model):
    class Meta:
        db_table = 'product_expertise_master'

    name = models.CharField(max_length=255)

    main_category = models.CharField(max_length=255)
    user = models.ManyToManyField(User, verbose_name=("Users"), related_name="expertises")
要筛选查询,请执行以下操作:

InsuranceProfile.objects.filter(user__expertises__isnull=False)

我想我必须重新表述我的问题。我已经在用户模型的InsuranceProfile模型上应用了筛选器,我想添加UserProductExperience模型文件管理器。我的最终输出应该是与所有三个模型匹配的所有条目。希望这会清除它,或者如果您想了解更多,请告诉我。更新了我的答案我非常感谢您……我想我必须重新表述我的问题。我已经在保险配置文件模型和用户模型上应用了筛选器,我想添加UserProductExperties模型文件管理器。我的最终输出应该是与所有三个模型匹配的所有条目。希望这会清除它,或者如果你想知道更多,请告诉我。更新了我的答案我无法感谢你。。。。