1
如何在DateTimeField上加入兩個模型?Django:加入DateTimeField
class ExchangeRate(models.Model):
date = models.DateTimeField(...)
usd_rub = models.DecimalField(...)
class LedgerEntry(models.Model):
account = models.ForeignKey(...)
date = models.DateTimeField(...)
amount = models.DecimalField(...)
這是我想要的一個例子。請注意,ExchangeRate表中的記錄具有任意日期和時間(與LedgerEntry表中的日期不相對應)。沒關係加盟只是日期或時間ExchangeRates(它是安全的忽視,分,秒等)
ExchangeRate LedgerEntry
–––––––––––––––––––––––––––- –––––––––––––––––––––––––––---------
| Date | USD_RUB | | account | Date | Amount |
|---------------|----------| |–––––––––|---------------|--------|
| 29 Nov, 14:15 | 100.00 | | 13 | 29 Nov, 14:40 | 10.0 |
| 29 Nov, 14:04 | 200.00 | | 37 | 29 Nov, 14:45 | 11.0 |
| 29 Nov, 13:51 | 150.00 | | 19 | 01 Oct, 10:32 | 12.0 |
| ............. | .........| –––––––––––––––––––––––––––---------
| 01 Oct, 10:23 | 500.00 |
–––––––––––––––––––––––––––-
Join result
–––––––––––––––––––––––––––-------------------------------------
| account | Date | Amount | USD_RUB | USD_RUB amount |
|–––––––––|---------------|--------|----------|----------------|
| 13 | 29 Nov, 14:40 | 10.0 | 100.00 | 1000.0 |
| 37 | 29 Nov, 14:45 | 11.0 | 100.00 | 1100.0 |
| 19 | 01 Oct, 10:32 | 12.0 | 500.00 | 6000.0 |
–––––––––––––––––––––––––––-------------------------------------
我明白,我可以查詢數據庫中的所有這些對象和Python的「加盟」他們。數據庫中有數千條記錄,所以這實際上是效率低下的,因爲當爲分類賬條目查找相應的匯率時,它會產生大量的單一選擇語句。