Django 'Join' TischePython

Python-Programme
Anonymous
 Django 'Join' Tische

Post by Anonymous »

Ich habe 3 Tabellen in Django < /p>
class Transactions(models.Model):
public_key = models.ForeignKey(Keys, on_delete=models.CASCADE)
txid = models.CharField(max_length=30)
timestamp = models.DateTimeField()
hash = models.CharField(max_length=64)
block = models.IntegerField()
amount = models.IntegerField()
saldo = models.IntegerField()
fee = models.IntegerField()
fiat_CHF = models.FloatField(default=0)
fiat_USD = models.FloatField(default=0)
fiat_EUR = models.FloatField(default=0)
position = models.IntegerField(default=0)

class Price(models.Model):
date = models.DateTimeField()
price = models.FloatField()
fiat = models.ForeignKey(Currencies, on_delete=models.DO_NOTHING)

class PriceTextBackup(models.Model):
date = models.CharField(max_length=20)
price = models.FloatField()
fiat = models.ForeignKey(Currencies, on_delete=models.DO_NOTHING)
< /code>
Dies stammt aus einer Bitcoin -App, die Transaktionstabelle enthält die genaue Zeit, als die Transaktion abgebaut wurde. Jetzt möchte ich den gespeicherten Bitcoin-Preis für diesen Tag laden. Es muss nicht in der Datenbank sein.price_list = []
transaction_counter = 0

#Price
for transaction in transactions:
filter_date = transaction.timestamp.date()
price = Price.objects.filter(fiat=cur_id, date=filter_date).first()
if not price:
price = PriceTextBackup.objects.filter(fiat=cur_id, date=filter_date.strftime("%d-%m-%Y")).first()
if price:
if transaction.amount > 0:
sats_price=price.price*transaction.amount
price_list.append(sats_price)
transaction_counter += transaction.amount

avg_price = 0
counter = 0
for price in price_list:
if price:
avg_price += price
counter += 1

if not transaction_counter == 0:
avg_price = avg_price/transaction_counter
< /code>
Am Ende möchte ich die Transaktion mit einem Preis anzeigen. Dieser Preis kann aus Preis, Pricetextbackup oder 0, < /p>
Ich könnte es genauso tun, aber wie können Sie ihn im QuerySet zum Anzeigen bringen? Es gab Änderungen in der API, sodass Sie keine älter als 1 Jahr laden können. Einige Transaktionen haben also keinen Preis. Die App verwendet SQLite als Datenbank. Zuerst habe ich das Datum für den Preis als einfacher Text gespeichert. Später habe ich es als Date gespeichert. Deshalb gibt es also zwei Tabellen und einige Transaktionen haben sogar keinen Preis.
Gibt es einen einfacheren Weg, dies zu erreichen und wie?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post