如何在Django管理界面中添加按钮以更新模型字段?

时间:2020-01-17 14:54:19

标签: django

我在管理界面中列出了几个市场,并且我正在寻找一种解决方案,方法是通过单击列中的按钮(无批量操作)来用价格历史记录填充市场。填充市场工具以输入candle模型所定义的与此市场相关的烛台列表。最好的方法是什么?

到目前为止,我可以使用django.utils.format_html在管理部分中创建按钮,但是我不知道如何将按钮链接到方法exchange.populateMarket()

admin.py

@admin.register(Market)
class CustomerAdmin(admin.ModelAdmin):
    list_display = (
        'market',
        'action'
    )

    def action(self, obj):
        return html.format_html(
            '<a class="button" name="print_bnt" href="{}">Populate</a>',
            'populate'
        )
    action.short_description = 'Actions'
    action.allow_tags = True

models.py

# model for markets
class Market(models.Model):
    exchange = models.ForeignKey(Exchange, 
                                 on_delete=models.CASCADE, 
                                 related_name='exchange'
                                 )
    pair = models.CharField(max_length=10)

    def __str__(self):
        return self.get_pair_display()


# model for candlesticks
class Candle(models.Model):
    market = models.ForeignKey(Market,
                               on_delete=models.CASCADE,
                               related_name='market',
                               null= True
                               )
    timestamp = models.DateTimeField(unique=True)
    volume = models.PositiveIntegerField()
    op = models.DecimalField(max_digits=20, decimal_places=10, verbose_name='open')
    hi = models.DecimalField(max_digits=20, decimal_places=10, verbose_name='high')
    lo = models.DecimalField(max_digits=20, decimal_places=10, verbose_name='low')
    cl = models.DecimalField(max_digits=20, decimal_places=10, verbose_name='close')

    def __str__(self):
        return self.get_timestamp_display()

exchange.py

def populateMarket():
    # download price serie 
    candles = fetchMarket()
    # create an object for each candle
    for c in candles:
        ...

0 个答案:

没有答案
相关问题