Python 获取其他表Django filter/select_related

Python 获取其他表Django filter/select_related,python,django,Python,Django,我正在尝试使用Django的过滤器过滤值,并选择_related。我可以获取基本项,但无法获取任何关联字段 item = Items.objects.filter(tests__company_user_id__user_id=user_id).filter(item_id=item_id).select_related("tests__company_user").values() 我的目标是从与项目相关联的用户那里获取数据,并将其添加到项目返回中。这可能吗 数据模型如下所示: class

我正在尝试使用Django的过滤器过滤值,并选择_related。我可以获取基本项,但无法获取任何关联字段

item = Items.objects.filter(tests__company_user_id__user_id=user_id).filter(item_id=item_id).select_related("tests__company_user").values()
我的目标是从与项目相关联的用户那里获取数据,并将其添加到项目返回中。这可能吗

数据模型如下所示:

class Items(models.Model):
    item_id = models.CharField(primary_key=True,max_length=100)
    mailed_date = models.DateTimeField()
    received_date = models.DateTimeField()
    last_viewed = models.DateTimeField()
    dateitemsent = models.DateTimeField()
    itemsent = models.CharField(max_length=25)
    itemret = models.CharField(max_length=25)
    dateitemret = models.DateTimeField()
    status = models.CharField(max_length=25)

class Tests(models.Model):
    tests_id = models.CharField(primary_key=True, unique=True, max_length=100)
    teststypetest_id = models.ForeignKey(TestsType)
    dateitemord = models.DateTimeField()
    testdate = models.DateTimeField()
    teststypetest_id = models.ForeignKey(TestsType)
    dateitemord = models.DateTimeField()
    testdate = models.DateTimeField()
    status = models.CharField(max_length=100)
    item_id = models.ForeignKey(Kits)
    company_user_id = models.ForeignKey(CompanyUser)

class CompanyUser(models.Model):
    user_id = models.CharField(primary_key=True,max_length=100)
    username = models.CharField(max_length=254,default="empty")
        sec_question_1 = models.CharField(max_length=254)
        sec_answer_1 = models.CharField(max_length=254)
        sec_question_2 = models.CharField(max_length=254)
        sec_answer_2 = models.CharField(max_length=254)
        sec_question_3 = models.CharField(max_length=254)
        sec_answer_3 = models.CharField(max_length=254)
当您使用缓存连接的对象信息但不检索时,需要显式提取数据:

item = Items.objects.filter(tests__company_user_id__user_id=user_id).filter(item_id=item_id).select_related("tests__company_user").values("tests__company_user_id__sec_question_1", "tests__company_user_id__sec_question_2", ...)
编辑

假设您只需要
CompanyUser
中的两个字段:
secu-question\u 1
secu-question\u 2

from django.db.models import F

item = Items.objects.filter(tests__company_user_id__user_id=user_id).filter(item_id=item_id).select_related("tests__company_user").values().annotate(q1=F('tests__company_user_id__sec_question_1'), q2=F('tests__company_user_id__sec_question_2'))
当您使用缓存连接的对象信息但不检索时,需要显式提取数据:

item = Items.objects.filter(tests__company_user_id__user_id=user_id).filter(item_id=item_id).select_related("tests__company_user").values("tests__company_user_id__sec_question_1", "tests__company_user_id__sec_question_2", ...)
编辑

假设您只需要
CompanyUser
中的两个字段:
secu-question\u 1
secu-question\u 2

from django.db.models import F

item = Items.objects.filter(tests__company_user_id__user_id=user_id).filter(item_id=item_id).select_related("tests__company_user").values().annotate(q1=F('tests__company_user_id__sec_question_1'), q2=F('tests__company_user_id__sec_question_2'))

值不应该检索数据吗?
.values()
将检索
对象的数据,因为您正在查询
表。如何检索项对象以及用户对象的数据?对于这两种模型,我是否必须在select_related()中手动输入每个字段?不,您可以使用annotate。我将更新答案。您的更新不会返回任何与项目相关的数据。我需要项数据和用户数据。值不应该检索数据吗?
。values()
将检索
对象的数据,因为您正在查询
表。如何检索项对象和用户对象的数据?对于这两种模型,我是否必须在select_related()中手动输入每个字段?不,您可以使用annotate。我将更新答案。您的更新不会返回任何与项目相关的数据。我需要项目数据和用户数据。