Ich habe eine Anwendung, wo Benutzer ihre eigenen Anzeige Spalten auswählen. Jede Anzeigespalte hat eine bestimmte Formel. Um diese Formel zu berechnen, muss ich einige verwandte Spalten (Eins-zu-Eins-Beziehung) verbinden und den Wert berechnen."SELECT ... AS ..." mit verwandten Modelldaten in Django
Die Modelle sind wie (dies ist nur ein Beispiel-Modell, tatsächlich hat mehr als 100 Felder):
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()
Ich habe versucht zu tun:
ratios = {'growth':'quarter__sales_now/quarter__sales_previous'}
CompanyCode.objects.extra(select=ratios)
# raises "Unknown column 'quarter__sales_now' in 'field list'"
Ich habe auch versucht rohe Abfrage:
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
Bitte geben Sie mir einen kleinen Hinweis, wie ich verwandte Spalten verwenden kann, vorzugsweise mit 'extra' Befehl. Vielen Dank.
Sorry, aber die oben ist nur ein Beispiel. Es gibt mehr als 100 verschiedene Verhältnisse und 100 verschiedene Felder. – Pratyush