django - Django,外键没有被会话数据填充
问题描述
我试图用登录的用户填写我的外键(雇主),但我已经看到了很多方法,但他们没有为我工作,有谁知道我做错了什么?我该如何解决?
看法:
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)
推荐阅读
- firebase - 如何在 javascript 中使用 Firebase 函数插入现有的 Firebase DB 数组
- laravel - 有很多:显示具有 1 个或多个元素的区域
- ios - 在 swift 中使用正则表达式阿拉伯文和英文字符进行密码验证
- javascript - Bootstrap 4 JavaScript 不工作 Symfony4
- r - R / dyplr:将两行转换为两列
- python - 在 Dataframe 中为分类数据添加标签
- ios - iOS 应用测试本地化翻译是否具有相同的键
- python - 如何在 python 中抓取完整的 Instagram 页面?
- python - 如何让 python 信任我服务器的 TLS 自签名证书:ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败
- html - 为什么元素不在一行中?