Как установить значение поля в модели Джанго, равное возвращению функции - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь сделать поле «доступным» равным возвращению функции, которая использует поле «ethAddress» в качестве параметра для возврата количества эфира в этой учетной записи адресов.

функция для получения количества eth в адресе

def getAddressAmount(address):

   balance = web3.eth.getBalance(address)

   return web3.fromWei(balance, "ether")

Мой файл models.py

from django.db import models
from django.urls import reverse
from web3apps.getData import getAddressAmount

class Advertisement(models.Model):

    ethAddress = models.CharField(max_length=42, default='')


    available = getAddressAmount(ethAddress)


    def get_absolute_url(self):
        return reverse("advertisement-update", kwargs={"id": self.id})


    def __str__(self):
        return self.ad

1 Ответ

0 голосов
/ 28 апреля 2019

Согласно вашей логике, я не думаю, что вы должны сохранять "available" в модели.Вы можете легко получить доступ к значению, используя property of model.

from django.db import models
from django.urls import reverse
from web3apps.getData import getAddressAmount

class Advertisement(models.Model):

    ethAddress = models.CharField(max_length=42, default='') 

    def get_absolute_url(self):
        return reverse("advertisement-update", kwargs={"id": self.id})

    def __str__(self):
        return self.ad

    @property
    def available(self)
        balance = web3.eth.getBalance(self.ethAddress)
        return web3.fromWei(balance, "ether")

. Это легко для вас рассчитать во время выполнения, когда вам нужно, и оно будет примерно таким же, как значение поля вашей модели.

Как:

a = Advertisement.objects.get(id=1)
a.available 

# это вызовет свойство, которое в модели может иметь доступ к полю в модели.

...