私はユーザーが自分の表示列を選択するアプリケーションを持っています。各表示列には、指定された数式があります。その数式を計算するには、関連する列(1対1の関係)にほとんど参加せずに値を計算する必要があります。以下のようDjangoで関連するモデルデータを持つ "SELECT ... AS ..."
モデルがある(これは単なる例のモデルであり、実際には100個の以上のフィールドを持つ):
class CompanyCode(models.Model):
"""Various Company Codes"""
nse_code = models.CharField(max_length=20)
bse_code = models.CharField(max_length=20)
isin_code = models.CharField(max_length=20)
class Quarter(models.Model):
"""Company Quarterly Result Figures"""
company_code = models.OneToOneField(CompanyCode)
sales_now = models.IntegerField()
sales_previous = models.IntegerField()
私がやってみました:
ratios = {'growth':'quarter__sales_now/quarter__sales_previous'}
CompanyCode.objects.extra(select=ratios)
# raises "Unknown column 'quarter__sales_now' in 'field list'"
私も生のクエリを使用してみました:
query = ','.join(['round((%s),2) AS %s' % (formula, ratio_name)
for ratio_name, formula in ratios.iteritems()])
companies = CompanyCode.objects.raw("""
SELECT `backend_companycode`.`id`, %s
FROM `backend_companycode`
INNER JOIN `backend_quarter` ON ( `backend_companycode`.`id` = `backend_companyquarter`.`company_code_id`)
""", [query])
#This just gives empty result
「余分な」コマンドを使用して関連する列をどのように使用できるかについて少し手がかりを与えてください。ありがとう。
申し訳ありませんが、上記の一例に過ぎません。 100以上の異なる比率と100の異なるフィールドがあります。 – Pratyush