Мы столкнулись со странной проблемой.Существует модель Transaction
, и у ее администратора есть пользовательский столбец revert
, который отправляет POST на сервер.
Странно то, что revert
в первой строке не работает.Я просто не отображаю тег <form>
.Другие строки работают правильно.
@admin.register(Transaction)
class TransactionAdmin(admin.ModelAdmin):
list_display = ['code', 'created', 'modified', 'wallet', 'title', 'amount', 'invoice_link','revert']
def get_queryset(self, request):
qs = super().get_queryset(request)
self.request = request
return qs
def revert(self, obj: Transaction):
if obj.pk:
html = render_to_string("alex_wallets/transactions/revert_block.html", context={'transaction': obj},
request=self.request)
return mark_safe(format_html(html))
revert_block.html
<div>
<form onsubmit="return confirm('Naozaj chcete vytvoriť opačnú transakciu?')"
action="{% url "wallets:revert_transaction" transaction.pk %}" method="post">
{% csrf_token %}
<button style=" color: #fff; background-color: #00D996; border: 0; border-radius:4px; cursor: pointer; padding: 5px 10px;" type="submit">Vrátiť
</button>
</form>
</div>
Это html
первой строки (возврат столбца):
<td class="field-revert"><div>
<input type="hidden" name="csrfmiddlewaretoken" value="agpE7aEExG19YJ3n8wDv88sC7J7u7aHXa5Od3vVJptA6t0on1gGENECaTt2Qp7hb">
<button style=" color: #fff; background-color: #00D996; border: 0; border-radius:4px; cursor: pointer; padding: 5px 10px;" type="submit">Vrátiť
</button>
</div></td>
И это html
отличного от первого столбца возврата строки:
<td class="field-revert"><div>
<form onsubmit="return confirm('Naozaj chcete vytvoriť opačnú transakciu?')" action="/alex/transakcie/transactions/revert/45/" method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="Pc7Pt41tXgMUyZyKOORUb2gQutkqCkjpP1woppiyP3lR3gTKHyU3QyqogdfMUhTD">
<button style=" color: #fff; background-color: #00D996; border: 0; border-radius:4px; cursor: pointer; padding: 5px 10px;" type="submit">Vrátiť
</button>
</form>
</div></td>
То же самое относится к форме inline
.
Знаете ли вы, в чем проблема?
РЕДАКТИРОВАТЬ:
Это всегда первый ряд.Я могу изменить порядок строк, и всегда это первый, который не отображается должным образом.И я проверил это в django-jet
и встроил в raw django-admin
тоже.У обоих есть эта проблема.
EDIT2:
В отладчике я вижу, что html
всегда отображается правильно, даже для первой строки.
EDIT3:
Это не зависит от браузера.То же самое происходит на Chrome
и Firefox
EDIT4:
Так что я ближе к корню.Я заметил, что он отображается правильно, но браузер удаляет первую форму.Вероятно, потому, что таблица changelist
по умолчанию окружена другой формой, но не знает, что делать.