Code: Alles auswählen
class Order(models.Model):
name = models.CharField(max_length=100)
ko_identifier = models.BooleanField()
order_price = models.FloatField()
quantity = models.FloatField()
order_value = models.FloatField()
order_fees = models.DecimalField(decimal_places=2,max_digits=5,default=0.0, null=True)
order_commission = models.DecimalField(decimal_places=2,max_digits=5,default=0.0)
stock_exchange_fees = models.DecimalField(decimal_places=2,max_digits=5,default=0.0)
courtage_fee = models.DecimalField(decimal_places=2,max_digits=5,default=0.0)
own_fees = models.DecimalField(decimal_places=2,max_digits=5,default=0.0)
transaction_fee = models.DecimalField(decimal_places=2,max_digits=5,default=0.0)
transaction_fee_sum = models.FloatField()
order_date = models.DateTimeField('order date')
#order_date = models.DateTimeField(auto_add_now=true)
order_wkn = models.CharField(max_length=6)
order_isin = models.CharField(max_length=12)
order_direction = models.ForeignKey(OrderDirection, null=True, on_delete= models.SET_NULL)
order_place = models.ForeignKey(OrderPlace, null=True, on_delete= models.SET_NULL)
Später wird die Tabelle natürlich Hunderte / Tausende von Einträgen enthalten.
wo ich Schwierigkeiten habe:
Ich muss mindestens zwei Sichten auf diese Tabelle erstellen
- Aktuelles Portfolio
- abgeschlossene "Geschäfte"
und so etwas für verkaufte Positionen (Weite Daten wie Verkaufszeitpunkt etc. sind sicherlich auch noch hinzuzufügen):
Was mich umtreibt:
- Wie kann ich diese Sichten optimalerweise und auch in Hinblick auf Geschwindigkeitsaspekte umsetzen?
- aktuelle versuche ich einen View zu generieren auf meine gesamte Order-Tabelle, was sich aber schwierig gestaltet, da ich ja über ggf. mehrere Orders Durchschnitte addieren oder subtrahieren muss... und dafür muss ich ja auch erstmal wissen wie viele und welcher Art und und und . Eine georndete Tabelle wäre zumindest einfach zu generieren: orders = Order.objects.order_by('order_wkn', 'order_date'). Jetzt konnte ich von oben nach unten durchgehen und Operationen durchführen... auch wenn ich noch nicht weiß wie, erscheint mir das erstmal nicht optimal...
- wäre das Umwandeln in eine Liste zu durchdenken?
- Sind ggf. zwei weitere Tabellen zu erstellen, wo dann immer neue Orders reingeuptadet werden? Vorschläge/Beispiele zur Umsetzung?
Gesamtauswertungen wie:
Code: Alles auswählen
total_ko = orders.filter(ko_identifier=1).count()
total_buy = orders.filter(order_direction=4).count()
total_sell = orders.filter(order_direction=3).count()
total_sum_buy = orders.filter(order_direction=4).aggregate(Sum('order_value')).get('order_value__sum', 0.00)
total_sum_sell = orders.filter(order_direction=3).aggregate(Sum('order_value')).get('order_value__sum', 0.00)