Django, Внешний ключ не заполняется данными сессии

я пытаюсь заполнить мой foreignkey (работодатель) пользователем, который вошел в систему, но я видел много способов, но они не сработали для меня, кто-нибудь знает, что я делаю неправильно? и как я могу это исправить?

Вид:

class JobCreate(CreateView):
    model = Job
    form = JobCreateForm()
    form_class = JobCreateForm
    context = {}
    success_url = reverse_lazy('jobsview')

    def POST(self,request):
        if request.method == 'POST':
            form = JobCreateForm(request.POST)
            if form.is_valid():
                job = form.save(commit=False)
                job.employer = request.user
                job.save()
                context = {}
                return render(request, 'jobs/jobs.html',context)
            else:
                context = {}
                return render(request, 'jobs/job_form.html',context)

Модель:

class Job(models.Model):
    employer = models.ForeignKey(User, related_name='employer', on_delete=CASCADE,blank=True)
    employees = models.ManyToManyField(User, related_name='employees2user',null=True,blank=True)
    title = models.CharField(max_length=200,)
    description = models.CharField(max_length=200,null=True,blank=True)
    category_id = models.ManyToManyField(Category,blank=True)
    skill_id = models.ManyToManyField(Skill,blank=True)
    approved = models.BooleanField(default=False)
    # img = models.ImageField(null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)


def __str__(self):          # Default value
    return self.title

HTML:

{% extends "jobs/layout.html" %}

{% block content %}
<h3> Job</h3>
<div class="container">
    <div class="jobform">
        <form action="" method="POST">
            {%csrf_token%}
            {% for field in form %}
                <label for="{{field.id_for_label}}">{{field.html_name}}</label>
                {{field}}
            {% endfor %}
            <p>Ctrl in houden om meerder te selecteren</p>
            <button type="submit" class="btn btn-dark btn-space">Submit</button>
        </form>
    </div>
</div>
{%endblock%}

В вашем методе представления попробуйте заменить

job = form.save(commit=False)
job.employer = request.user
job.save()

с

self.object = form.save(commit=False)
self.object.employer = self.request.user
self.object.save()

Кроме того, какова цель контекста {} ?

Можете ли вы просто поместить это непосредственно в метод form_valid? Это намного чище.

    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.employer = self.request.user
        self.object.save()
        return super(JobCreate, self).form_valid(form)
Вернуться на верх