The mechanism below exhibits no errors at the Stripe end. Stripe returns the necessary payment token. I have tried brutally stripping of the "/change/payment" and while it silences the error, the form just re-shows itself.
<aside> I see a similar problem in 32-bit iOS Safari which doesn't seem to like the svg tick symbol displayed in the Admin change screen success message. The only symptom is the tick doesn't appear and the user is none the wiser. But it generates an error email Field 'id' expected a number but got '55/img/icon-yes.svg' </aside>
ValueError at /admin/chemical/chemical/20/change/payment/change/ Field 'id' expected a number but got '20/change/payment'. Request Method: GETRequest URL: http://localhost:8088/admin/chemical/chemical/20/change/payment/change/
Django Version: 3.2.13 Exception Type: ValueError Exception Value: Field 'id' expected a number but got '20/change/payment'.Exception Location: D:\Users\mike\envs\xxai\lib\site-packages\django\db\models\fields\__init__.py, line 1825, in get_prep_value
Python Executable: D:\Users\mike\envs\xxai\Scripts\python.exe Python Version: 3.8.3Here is the ChemicalAdmin.change_view(). I filled in the docstring a year ago when debugging previously.
def change_view(self, request, object_id, form_url="", extra_context=None):
""" self = ChemicalAdmin object_id = chemical form_url is passed through to self.render_change_form() via self.get_preserved_filters(request) and then added to contextextra_context = dict of apps, models, admin_urls and permissions. Ensure self.change_form_template = None so next time it doesn't use payment.html
""" extra_context = extra_context or {} self.change_form_template = None chemical = Chemical.objects.get(id=object_id) intro = chemical.get_introduction() if intro and not chemical.token: if intro.category in CHARGE: self.change_form_template = "payment.html" context = collect_gateway_context(chemical) extra_context.update(self.admin_site.each_context(request)) extra_context.update(context) self.admin_site.admin_view( payment_view(request, chemical, context=extra_context) )return super().change_view(request, object_id, form_url, extra_context)
And the url config ...re_path(r"invoice/(?P<pk>\d+)/$", billing_views.invoice_view, name="invoice_view"),
re_path(r"payment/$", billing_views.payment_view, name="payment_view"), re_path(r"success/$", billing_views.success_view, name="success_view"), And the payment.html form ... <form action="payment" method="POST"> {% csrf_token %} {% if form.errors or form.non_field_errors %} {{ form.errors }} {{ form.non_field_errors }} {% endif %} {% for field in form %} {% if field.name == "chemical_id" %}<input type="hidden" name="chemical_id" id="id_chemical_id" value="{{ chemical.id }}" />
{% else %} {{ field }} {% endif %} {% endfor %} <scriptsrc="https://checkout.stripe.com/checkout.js"; class="stripe-button"
data-key="{{ data_key }}" data-amount="{{ data_amount }}" data-name="{{ data_name }}" data-description="{{ data_description }}" data-image="{{ data_image }}" data-locale="{{ data_locale }}" data-currency="{{ data_currency | lower }}" data-zip-code="true" data-panel-label="Pay"> </script> </form> Thanks Mike -- Signed email is an absolute defence against phishing. This email has been signed with my private key. If you import my public key you can automatically decrypt my signature and be sure it came from me. Just ask and I'll send it to you. Your email software can handle signing. -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/230a7a65-08f2-f990-131f-7879c4fbb05a%40dewhirst.com.au.
OpenPGP_signature
Description: OpenPGP digital signature