前提・実現したいこと
CSV出力のため、複数テーブルから取得した値を結合するか、もしくは1つのテーブルに関連づいているテーブルのフィールド全てを取得したいです。
下記のモデルの場合に、まずReportテーブルのIDを取得し、関連のDatetimeテーブルから外部キー以外の値(time1,time2)も取得する、もしくは同じIDで一致する行をテーブルごとに取得し、結合するでも良いのです。
models
1class Report(models.Model): 2 3 def __str__(self): 4 return self.id 5 6 id = models.CharField(max_length=32, primary_key=True) 7 foo = models.CharField(max_length=255) 8 9class Datetime(models.Model): 10 11 def __str__(self): 12 return self.time1 13 14 id = models.OneToOneField(Report, on_delete=models.CASCADE) 15 time1 = models.DateTimeField() 16 time2 = models.DateTimeField()
試したこと
queryset_report = Report.objects.filter(datetime__time1__range=(delete_start_date, delete_end_date)).select_related('datetime').select_related('participant')
delete_start_date=2019-01-01 00:00:00
delete_end_date=2019-02-01 00:00:00
発生している問題
print(f'queryset_report.query: {queryset_report.query}') > queryset_report.query: SELECT `report`.`id`, `datetime`.`id`, `datetime`.`time1`, `datetime`.`time2`, FROM `report` INNER JOIN `datetime` ON (`report`.`id` = `datetime`.`id`) WHERE `datetime`.`time1` BETWEEN 2019-01-01 00:00:00 AND 2019-02-01 00:00:00
print(f'queryset_report: {queryset_report.model._meta.fields}') > queryset_report.model._meta.fields: (<django.db.models.fields.CharField: id>)
SELECT文にはdatetime
.time1
, datetime
.time2
が含まれており、datetimeテーブルもJOINされているのに対し、fields、values()などで確認するとdatetimeテーブルの情報は一切含まれていません。
なぜでしょう。
どのように取得すべきでしょうか。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/13 15:41 編集
2019/04/14 03:02