簡體   English   中英

獲取其他表Django filter / select_related

[英]Getting other tables Django filter/select_related

我正在嘗試使用Django的filter和select_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)

當使用select_related()時 ,要緩存聯接的對象信息,但不進行檢索,則需要顯式提取數據:

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", ...)

編輯

讓我們假設你只是想從2場CompanyUsersec_question_1sec_question_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'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM