Удаление всех объектов из модели по определенному значению с помощью кнопки django

Пожалуйста, посмотрите снимок экрана таблицы для контекста: enter image description here

Я пытаюсь удалить строку таблицы, используя соответствующую кнопку Delete Asset (т.е. удалить все строки в модели django с Symbol: 1INCHUP)

Как я это представляю, кнопка Delete Asset отправляет соответствующий символ в следующее представление:

View FYI - этот View создает таблицу, но я пытаюсь заставить кнопку удаления работать здесь

# CryptoAssets is a model
def get_asset_price(request, symbol):
    sym = CryptoAssets.objects.filter(user_id=request.user.id).values('symbol')
    obj = sym.annotate(total_units=Sum('units'),total_cost=Sum('cost')).order_by('symbol')

    cp = [CryptoPrices.objects.filter(ticker=s['symbol']).values('current_price').order_by('ticker')[0] for s in sym]

    for i, o in enumerate(obj):
        o.update({'purchase_price': round(o['total_cost']/o['total_units'], 5)})
        o.update({'current_price': cp[i]['current_price']})
        pl = cp[i]['current_price']*o['total_units']-o['total_cost']
        o.update({'profit_loss': round(pl, 5)})
        o.update({'profit_loss_p': round(pl/o["total_cost"]*100, 2)})

    # Delete Asset request
    if request.METHOD == "POST":
        asset = CryptoAssets.objects.filter(user_id=request.user.id, symbol=symbol)
        asset.delete()
        return redirect('coinprices/my-dashboard.html')

    context = {
        'object': obj,
    }
    return render(request, 'coinprices/my-dashboard.html', context)

HTML

{% for row in object %}
<tr>
  <td style="text-align:center">{{ row.symbol }}</td>
  <td style="text-align:center">{{ row.total_units }}</td>
  <td style="text-align:center"><span class="prefix">${{ row.total_cost }}</span></td>
  <td style="text-align:center"><span class="prefix">${{ row.purchase_price }}</span></td>
  <td style="text-align:center"><span class="prefix">${{ row.current_price }}</span></td>
  <td style="text-align:center"><span class="prefix">${{ row.profit_loss }}</span></td>
  <td style="text-align:center"><span class="suffix">{{ row.profit_loss_p }}%</span></td>
  <td style="background-color:white; border: 1px solid white;">
     <form action="." method="POST">{% csrf_token %}
        <button href="{% url 'dashboard' row.symbol %}" class="btn btn-outline-danger btn-sm">Delete Asset</button>
     </form>
  </td>
</tr>
{% endfor %}

path('my-dashboard/', get_asset_price, name='dashboard'),

Ошибка

TypeError: get_asset_price() missing 1 required positional argument: 'symbol'

Я предполагаю, что форма для этого не нужна, а также не уверен, что нахожусь на правильном пути, но любой совет будет замечательным.

Возможно, вам нужно поймать параметр optional symbol в url и отправить его в представление.

def get_asset_price(request, symbol=None):
    # ...
    if symbol and request.METHOD == "POST":
        # delete ...
        return redirect('dashboard')
path('my-dashboard/', get_asset_price, name='dashboard'),
re_path('my-dashboard/(?P<symbol>\w+)', get_asset_price, name='dashboard-delete'),

И отправьте форму на правильный url для удаления данных.

<form action="{% url 'dashboard-delete' row.symbol %}" method="POST">
    {% csrf_token %}
    <button type="submit" class="btn btn-outline-danger btn-sm">Delete Asset</button>
</form>

Дополнительно вы можете добавить подтверждающее сообщение перед отправкой запроса на удаление.

<form onsubmit="return confirm('Are you sure?');" action="{% url 'dashboard-delete' row.symbol %}" method="POST">
    {% csrf_token %}
    <button type="submit" class="btn btn-outline-danger btn-sm">Delete Asset</button>
</form>
Вернуться на верх