143👍
city = forms.CharField(widget=forms.TextInput(attrs={'autocomplete':'off'}))
122👍
Sorry for advertisment, but I’ve recently released an app (https://github.com/kmike/django-widget-tweaks) that makes such tasks even less painful so designers can do that without touching python code:
{% load widget_tweaks %}
...
<div class="field">
{{ form.city|attr:"autocomplete:off"|add_class:"my_css_class" }}
</div>
or, alternatively,
{% load widget_tweaks %}
...
<div class="field">
{% render_field form.city autocomplete="off" class+="my_css_class" %}
</div>
- [Django]-Django staticfiles not found on Heroku (with whitenoise)
- [Django]-How exactly do Django content types work?
- [Django]-Using JSON in django template
39👍
If you are using “ModelForm”:
class YourModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(YourModelForm, self).__init__(*args, **kwargs)
self.fields['city'].widget.attrs.update({
'autocomplete': 'off'
})
- [Django]-Django limit_choices_to for multiple fields with "or" condition
- [Django]-Django. A good tutorial for Class Based Views
- [Django]-How to iterate through dictionary in a dictionary in django template?
26👍
If you are using ModelForm
, apart from the possibility of using __init__
as @Artificioo provided in his answer, there is a widgets
dictionary in Meta for that matter:
class AuthorForm(ModelForm):
class Meta:
model = Author
fields = ('name', 'title', 'birth_date')
widgets = {
'name': Textarea(attrs={'cols': 80, 'rows': 20}),
}
- [Django]-Suppress "?next=blah" behavior in django's login_required decorator
- [Django]-Django – How to pass several arguments to the url template tag
- [Django]-">", "<", ">=" and "<=" don't work with "filter()" in Django
4👍
I did’t want to use an entire app for this thing.
Instead I found the following code here https://blog.joeymasip.com/how-to-add-attributes-to-form-widgets-in-django-templates/
# utils.py
from django.template import Library
register = Library()
@register.filter(name='add_attr')
def add_attr(field, css):
attrs = {}
definition = css.split(',')
for d in definition:
if ':' not in d:
attrs['class'] = d
else:
key, val = d.split(':')
attrs[key] = val
return field.as_widget(attrs=attrs)
use the tag in the html file
{% load utils %}
{{ form.field_1|add_attr:"class:my_class1 my_class2" }}
{{ form.field_2|add_attr:"class:my_class1 my_class2,autocomplete:off" }}
- [Django]-In django, how do I sort a model on a field and then get the last item?
- [Django]-Django rest framework nested self-referential objects
- [Django]-How to create a user in Django?
0👍
I have spent quite a few days trying to create re-usable form templates to create and update models in Django forms. Note that am using ModelForm to change or create object. Am using also bootstrap to style my forms.
I used django_form_tweaks for some forms in past, but I needed some customization without a lot of template dependency. Since I already have jQuery in my Project I decided to leverage its properties to style my forms.
Here is the code, and can work with any form.
#forms.py
from django import forms
from user.models import User, UserProfile
from .models import Task, Transaction
class AddTransactionForm(forms.ModelForm):
class Meta:
model = Transaction
exclude = ['ref_number',]
required_css_class = 'required'
Views.py
@method_decorator(login_required, name='dispatch')
class TransactionView(View):
def get(self, *args, **kwargs):
transactions = Transaction.objects.all()
form = AddTransactionForm
template = 'pages/transaction.html'
context = {
'active': 'transaction',
'transactions': transactions,
'form': form
}
return render(self.request, template, context)
def post(self, *args, **kwargs):
form = AddTransactionForm(self.request.POST or None)
if form.is_valid():
form.save()
messages.success(self.request, 'New Transaction recorded succesfully')
return redirect('dashboard:transaction')
messages.error(self.request, 'Fill the form')
return redirect('dashboard:transaction')
HTML Code
Note: Am using bootstrap4 modal to remove the hassle of creating many views. Maybe it is better to use generic CreateView or UpdateView.
Link Bootstrap and jqQery
<div class="modal-body">
<form method="post" class="md-form" action="." enctype="multipart/form-data">
{% csrf_token %}
{% for field in form %}
<div class="row">
<div class="col-md-12">
<div class="form-group row">
<label for="" class="col-sm-4 col-form-label {% if field.field.required %}
required font-weight-bolder text-danger{%endif %}">{{field.label}}</label>
<div class="col-sm-8">
{{field}}
</div>
</div>
</div>
</div>
{% endfor %}
<input type="submit" value="Add Transaction" class="btn btn-primary">
</form>
</div>
Javascript Code remember to load this in $(document).ready(function() { /* ... */});
function.
var $list = $("#django_form :input[type='text']");
$list.each(function () {
$(this).addClass('form-control')
});
var $select = $("#django_form select");
$select.each(function () {
$(this).addClass('custom-select w-90')
});
var $list = $("#django_form :input[type='number']");
$list.each(function () {
$(this).addClass('form-control')
});
var $list = $("form :input[type='text']");
$list.each(function () {
$(this).addClass('form-control')
});
var $select = $("form select");
$select.each(function () {
$(this).addClass('custom-select w-90')
});
var $list = $("form :input[type='number']");
$list.each(function () {
$(this).addClass('form-control')
});
- [Django]-Django: For Loop to Iterate Form Fields
- [Django]-Django-celery: No result backend configured
- [Django]-Get list item dynamically in django templates
0👍
Example:
class LoginForm(forms.ModelForm):
username = forms.CharField(max_length=50, label='Username', widget=forms.TextInput(attrs={"class":"login-input", "autocomplete": "username"}))
password = forms.CharField(label='Пароль', widget=forms.PasswordInput(attrs={"class":"login-input", "autocomplete": "current-password"}))
- [Django]-Django – accessing the RequestContext from within a custom filter
- [Django]-How to check if ManyToMany field is not empty?
- [Django]-How can I list urlpatterns (endpoints) on Django?