lucasrf27
lucasrf27

Reputation: 360

Related to user object ain't beeing created Django

thanks for your time:

i've been having a problem on my POST request its getting me de code 302.0

it should create a object that is related to the user that did the request:

views.py:

@login_required
@transaction.atomic
def parceiros_create(request):
    if request.method == 'POST':
        form = ParceirosForm(request.POST, instance=request.user.parceiros)
        if form.is_valid():
            form.save()
            messages.success(request, ('Parceiro criado'))
            return redirect('home2')
        else:
            messages.error(request, ('Please correct the error below.'))
    else:
        form = ParceirosForm(instance=request.user)
    context = {
        'form': form,
    }
    return render (request, 'parceiroform.html', context)

forms.py:

class ParceirosForm(forms.ModelForm):
    nome = forms.CharField(max_length=200)
    endereco = forms.TextInput()
    responsavel = forms.CharField(max_length=100)    
    tel = PhoneField(max_length=12)

    class Meta:
        prefix = 'parceiro'
        model = Parceiros
        fields = ['nome', 'endereco', 'responsavel', 'tel']

models.py:

get_user_model = User

class Parceiros (models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    nome = models.CharField(max_length=200)
    endereco = models.TextField(max_length=400, blank=True)
    responsavel = models.CharField(max_length=100)
    tel = PhoneField(max_length=12)
    created_at = models.DateTimeField(auto_now=True)
    updated_at = models.DateTimeField(auto_now_add=True, blank=True)
    ativo = models.BooleanField(default=False)

    def __str__(self):
        return '%s %s' % (self.user, self.nome)

parceiroform.html:

{% extends 'base.html' %}

{% block content %}

<h1>ok</h1>
<h1>OK</h1>
<h1>ok</h1>

<form method="POST">
    {% csrf_token %}
    {{form.as_p}}
    <button type="submit">Save</button>
</form>
{% endblock %}

i'm getting the message (parceiro criado) on my admin although ain't creating any object(Parceiros).

Upvotes: 0

Views: 33

Answers (1)

Arjun Shahi
Arjun Shahi

Reputation: 7330

You are not handling the user so change it like this

if form.is_valid():
      obj = form.save(commit=False)
      obj.user = request.user
      obj.save()
      ....

Upvotes: 1

Related Questions