2017-10-27 11 views
3

私は、次のモデルがあります:Django ORMでLeft Outer Joinを実行するには?

class CandidateDetail(models.Model): 
    full_name = models.CharField(max_length=128, null=True) 
    email_id = models.CharField(max_length=64, null=True) 
    created_at = models.DateTimeField(auto_now_add=True) 
    modified_at = models.DateTimeField(auto_now=True) 


class Retake(models.Model): 
    id = models.UUIDField(default=uuid.uuid4, primary_key=True, unique=True) 
    candidate_detail = models.ForeignKey('CandidateDetail') 
    is_expired = models.BooleanField(default=False) 
    owner_detail = models.ForeignKey(User) 
    created_at = models.DateTimeField(auto_now_add=True) 
    modified_at = models.DateTimeField(auto_now=True) 

私は、次のLEFT OUTERは、クエリ結合を実行します:

SELECT s.*, r.* FROM app_candidatedetail s LEFT OUTER JOIN app_retake r ON (s.id = r.candidate_detail_id)

DBは、PostgreSQLです。

私は

qset = CandidateDetail.objects.raw('SELECT s.*, r.* FROM app_candidatedetail s LEFT OUTER JOIN app_retake r ON (s.id = r.candidate_detail_id)')

を使用してクエリを行うことができCandidateDetailテーブルのidフィールドが主キーとして機能するIntegerFieldあるジャンゴのデフォルトのIDです。

しかし、これをシリアライザで使用してJSONとして結果を返したいと思います。この問題のORMクエリを書く方法と、このクエリのシリアライザを作成する方法について教えてください。

ありがとうございました。

答えて

0

あなたの要件は、JSON、

>>> emp = Resource.objects.filter(der_current_role="2D Supervisor").values() 
>>> for i in emp: 
... i.update(Role.objects.filter(emp_id=i['emp_id']).first().__dict__) 
... 
>>> emp 
、これを試しているので、