【发布时间】:2017-10-27 18:06:58
【问题描述】:
我知道以前有人问过这个问题,但我已经阅读了答案,但没有一个是足够的。我正在尝试制作一个工作委员会网站,雇主可以在其中注册和发布工作。所以有一个Employer 对象,每个雇主可以发布任意数量的Jobs。我不确定如何创建一个可以编辑特定模型实例的表单。
模特Job:
poster = models.ForeignKey(Employer, on_delete=models.CASCADE)
job_title = models.CharField(max_length=50)
establishment_name = models.CharField(max_length = 50)
details = models.TextField(max_length = 2000)
salary = models.CharField(max_length = 20)
address = models.CharField(max_length = 50)
city = models.CharField(max_length = 50)
state_choices = (
#long list omitted on purpose
)
state = models.CharField(choices=state_choices, max_length = 20)
zip_code = models.CharField(max_length = 10)
def __str__(self):
return self.job_title + " - " + self.establishment_name \
+ ", " + self.poster.user.first_name + " " +self.poster.user.last_name
我有一个发布职位的表格:
class JobPostForm(ModelForm):
class Meta:
model = Job
fields= ('job_title',
'establishment_name',
'details',
'address',
'city',
'state',
'zip_code',
)
发布工作的视图:
if request.method == 'POST':
form = JobPostForm(request.POST)
if form.is_valid():
job_object = form.save(commit=False)
job_object.poster = request.user.employer
job_object.save()
return redirect('employer_home')
else:
form = JobPostForm()
以及发布工作的模板:
<form method="post" class="">
{% csrf_token %}
{{ form.as_p}}
<button type="submit">Post Job</button>
</form>
但不确定如何创建可以编辑职位的内容。我已经看到使用UpdateView() 的示例,但无法使其正常工作。有谁知道如何让它适用于这个特定的实例?
【问题讨论】:
-
使用
UpdateView应该像指定要更新的表单类一样简单,并确保pk是URL 的kwargs 的一部分。如果您不想在 URL 中包含 pk,您可以覆盖视图类中的get_object以通过应用程序所需的任何方式获取对象。
标签: django django-models django-forms django-templates