0

I've tried many options but none have worked. I want to initialize a form with logged in user as initial data.

#My form
class AdaugaPorumbel(forms.ModelForm):
    class Meta:
        model = Porumbei
        fields = ['data_adaugare', 'crescator', 'serie_inel', 'anul', 'culoare', 'culoare_ochi', 'sex', 'ecloziune',
              'rasa', 'linie', 'nume', 'tata',
              'mama', 'compartiment', 'status', 'data', 'vaccinat', 'info', 'imagine', 'imagine_ochi']
        widgets = {
            'ecloziune': forms.DateInput(format='%d/%m/%Y',
                                     attrs={'class': 'form-control', 'type': 'date'}),
            'data': forms.DateInput(format='%d/%m/%Y',
                                attrs={'class': 'form-control', 'type': 'date'}),
            'vaccinat': forms.DateInput(format='%d/%m/%Y',
                                    attrs={'class': 'form-control', 'type': 'date'}),

            'info': forms.Textarea(attrs={'class': 'form-control mt-15', 'rows': '3',
                                      'placeholder': 'Vor apărea în pedigree'}),

    }


# My view
@login_required(login_url='/auth/login/')
def porumbelnou(request):
    if request.method == "POST":
        form = AdaugaPorumbel(request.POST, request.FILES, initial={'crescator': crescator})
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/porumbei/vizualizare')
    else:
        form = AdaugaPorumbel()
    context = {
        'form': form,
}
    template = loader.get_template("adaugare-porumbel.html")
    return HttpResponse(template.render(context, request))

# I've already try but still won't working
if form.is_valid:
    form.save(commit=False)
    form.crescator = request.user
    form.save()
...

On models, crescator field is a foreignkey set to settings.AUTH_USER_MODEL.

Alex
  • 45
  • 8

1 Answers1

0

Remove crescator from form fields. Then after form validation assign a user to the object

form = AdaugaPorumbel(request.POST, request.FILES)
if form.is_valid():
    obj = form.save(commit=False)
    obj.crescator = request.user
    obj.save()
Goran
  • 6,644
  • 11
  • 34
  • 54
  • It's not working. But to set request.user as default value I have to make another implementations? – Alex Aug 06 '19 at 19:21
  • yes, it works and this is the easiest way to do it. You probably have an error somewhere else. But if you insist to have initial then try [this](https://stackoverflow.com/a/3533325/928017) – Goran Aug 06 '19 at 19:33