I'm developping my Django web application
and I would like to insert usernames field
in my table when any users are adding a row in the database. Obviously, users have to be logged in my application.
My form.py
file looks like this :
class CustomLabelModelChoiceField(forms.ModelChoiceField):
def __init__(self, *args, **kwargs):
self._label_from_instance = kwargs.pop('label_func', force_text)
super(CustomLabelModelChoiceField, self).__init__(*args, **kwargs)
def label_from_instance(self, obj):
return self._label_from_instance(obj)
class BirthCertificateForm(forms.ModelForm):
fk_parent1 = CustomLabelModelChoiceField(Person.objects.filter(), required=False, label = "Père", label_func=lambda obj: '%s %s %s' % (obj.lastname, obj.firstname, obj.social_number))
fk_parent2 = CustomLabelModelChoiceField(Person.objects.filter(), required=False, label = "Mère", label_func=lambda obj: '%s %s %s' % (obj.lastname, obj.firstname, obj.social_number))
mairie = forms.CharField(widget=forms.HiddenInput(), initial=Mairie.objects.using('default').last().city.encode('utf-8'))
user = forms.CharField(widget=forms.HiddenInput(), initial=user.username)
social_number = forms.CharField(widget=forms.HiddenInput(),required=False)
class Meta :
model = BirthCertificate
fields = ['lastname', 'firstname', 'sex', 'birthday', 'birthhour', 'birthcity', 'birthcountry','fk_parent1', 'fk_parent2', 'mairie', 'user', 'social_number']
widgets = {'country': CountrySelectWidget()}
def __init__(self, *args, **kwargs):
super(BirthCertificateForm, self).__init__(*args, **kwargs)
for key, value in self.fields.iteritems() :
self.fields[key].widget.attrs.update({'class':'form-fields'})
How I can write this line :
user = forms.CharField(widget=forms.HiddenInput(), initial=user.username)
In order to know which user has added, modified or deleted row(s) ?
user.username
works in my html template as example, but I don't know How I can pick up this variable and put it directly in my form ?
Thank you by advance !