Saya memiliki kolom input yang dirender dengan template seperti ini:
<div class="field">
{{ form.city }}
</div>
Yang diterjemahkan sebagai:
<div class="field">
<input id="id_city" type="text" name="city" maxlength="100" />
</div>
Sekarang misalkan saya ingin menambahkan autocomplete="off"
atribut ke elemen masukan yang diberikan, bagaimana saya melakukannya? Atau onclick="xyz()"
atau class="my-special-css-class"
?
Maaf untuk iklannya, tetapi saya baru-baru ini merilis sebuah aplikasi ( https://github.com/kmike/django-widget-tweaks ) yang membuat tugas-tugas seperti itu semakin tidak menyakitkan sehingga desainer dapat melakukannya tanpa menyentuh kode python:
atau, sebagai alternatif,
sumber
Jika Anda menggunakan "ModelForm":
sumber
Jika Anda menggunakan
ModelForm
, selain kemungkinan menggunakan__init__
@Artificioo yang diberikan dalam jawabannya, adawidgets
kamus di Meta untuk hal itu:Dokumentasi yang relevan
sumber
Saya tidak ingin menggunakan seluruh aplikasi untuk hal ini. Sebaliknya saya menemukan kode berikut di sini https://blog.joeymasip.com/how-to-add-attributes-to-form-widgets-in-django-templates/
gunakan tag di file html
sumber
Saya telah menghabiskan beberapa hari mencoba membuat templat formulir yang dapat digunakan kembali untuk membuat dan memperbarui model dalam formulir Django. Perhatikan bahwa saya menggunakan ModelForm untuk mengubah atau membuat objek. Saya juga menggunakan bootstrap untuk menata formulir saya. Saya menggunakan django_form_tweaks untuk beberapa formulir di masa lalu, tetapi saya membutuhkan beberapa penyesuaian tanpa banyak ketergantungan template. Karena saya sudah memiliki jQuery di Proyek saya, saya memutuskan untuk memanfaatkan propertinya untuk menata formulir saya. Ini kodenya, dan dapat bekerja dengan bentuk apa pun.
Views.py
Kode HTML Catatan: Saya menggunakan modal bootstrap4 untuk menghilangkan kerumitan membuat banyak tampilan. Mungkin lebih baik menggunakan CreateView atau UpdateView generik. Hubungkan Bootstrap dan jqQery
Kode Javascript ingat untuk memuat ini dalam
$(document).ready(function() { /* ... */});
fungsi.sumber