Связанные с пользовательским объектом не создаются Django - PullRequest
0 голосов
/ 19 февраля 2020

спасибо за ваше время:

У меня возникла проблема с моим запросом POST, он получил код 302.0

, он должен создать объект, связанный с пользователем, который это сделал запрос:

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 %}

Я получаю сообщение (parceiro criado) от моего администратора, хотя не создаю никакого объекта (Parceiros).

1 Ответ

1 голос
/ 19 февраля 2020

Вы не работаете с пользователем, поэтому измените его следующим образом

if form.is_valid():
      obj = form.save(commit=False)
      obj.user = request.user
      obj.save()
      ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...