9👍
I’m not too sure what you need to set email to, but You can set the initial values in lots of different places.
Your function def init() isn’t indented correctly which i guess is a typo? Also, why are you specifically giving the email form field a TextInput? It already renders this widget by default
You can set the email’s initial value in your form’s initialized (def __ init __(self))
(self.fields['email'].widget).initial_value = "something"
or in the model.py
email = models.CharField(default="something")
or as you have in forms.py
email = models.CharField(initial="something")
78👍
Assuming the value is based on ‘request’ you should use this:
class MyModelAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
form = super(MyModelAdmin, self).get_form(request, obj, **kwargs)
form.base_fields['my_field_name'].initial = 'abcd'
return form
- [Django]-Django templates: Best practice for translating text block with HTML in it
- [Django]-How to use custom manager with related objects?
- [Django]-Django Rest Framework – How to test ViewSet?
48👍
Since Django 1.7 there is a function get_changeform_initial_data
in ModelAdmin that sets initial form values:
def get_changeform_initial_data(self, request):
return {'name': 'custom_initial_value'}
EDIT: Apart from that, @Paul Kenjora’s answer applies anyway, which might be useful if you already override get_form
.
In case of inline (InlineModelAdmin
) there is no get_changeform_initial_data
. You can override get_formset
and set formset.form.base_fields['my_field_name'].initial
.
- [Django]-Django: how do you serve media / stylesheets and link to them within templates
- [Django]-LEFT JOIN Django ORM
- [Django]-Python-social-auth AuthCanceled exception
7👍
I needed the first solution of pastylegs since the other ones overwrite the whole Widget including, for example, the help text. However, it didn’t work for me as he posted it. Instead, I had to do this:
self.fields['email'].initial = 'something'
In my case, I was trying to do a personalized auto-increment(based on current data and not a simple default) in a field of a django admin form.
- [Django]-Putting a django login form on every page
- [Django]-How to launch tests for django reusable app?
- [Django]-Nested inlines in the Django admin?
4👍
This code is worked for me (Django 1.11):
from django import forms
class MyAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.initial['field_name'] = 'initial_value'
- [Django]-Uwsgi installation error in windows 7
- [Django]-Fighting client-side caching in Django
- [Django]-Load a Django template tag library for all views by default