如何解决使用 python 和 django:我的状态没有正确呈现在我的视图上
所以我的目标是将工作申请的状态显示为默认为“已申请”的下拉列表,但其余的选择将是:('A','已申请'),('B','进行中'),('C','面试安排'),('D','面试完成'),('E','工作机会'),('F','不完整'),('G','未选择'),('H','未知'),但它没有正确渲染,有什么帮助吗?
更新:当我点击“更新状态”时出现错误。 对于“状态”,Job App 表单不应有选择状态的选项,而是自动生成并分配默认值“已申请”,状态的“日期”属性与“日期”相同放入 Job_app
这是我的模型
class Job_application(models.Model):
name = models.CharField(max_length=100)
company = models.CharField(max_length=100)
location = models.CharField(max_length=250)
date = models.DateField('Date Applied')
url = models.CharField(
max_length=250,blank=True
)
requirements = models.TextField(
max_length=500,blank=True
)
notes = models.TextField(
max_length=500,blank=True
)
user = models.ForeignKey(User,on_delete=models.CASCADE)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('detail',kwargs={'job_id': self.id}) #every model instance has its own method
#django will now render the detail page,class Attachment(models.Model): # will implement later with AWS if possible -CO
url = models.CharField(max_length=250)
job_app = models.ForeignKey(Job_application,on_delete=models.CASCADE)
def __str__(self):
return f'Attachment for job_id: {self.job_id} @{self.url}'
class Status(models.Model):
date = models.DateField('Date')
STATUS = (
('A','Applied'),'In Progress'),'Interview scheduled'),'Interview complete'),'Job Offer'),'Incomplete'),'Not Selected'),'Unknown'),)
status = models.CharField(
max_length=1,choices=STATUS,default=STATUS[0][0]
)
job_app = models.ForeignKey(Job_application,on_delete=models.CASCADE)
def __str__(self):
# Nice method for obtaining the friendly value of a Field.choice
return f"{self.get_status_display()}"
# change the default sort
class Meta:
ordering = ['-date']
这是我的看法
def home(request):
return render(request,'home.html')
def about(request):
return render(request,'about.html')
def jobs_index(request):
# insert jobs model here
jobs = Job_application.objects.filter(user=request.user).order_by('-date')
return render(request,'jobs/index.html',{'jobs': jobs})
def jobs_detail(request,job_id):
# insert jobs model here
job = Job_application.objects.get(id=job_id)
status_form = StatusForm()
status = Status.objects.filter(job_app=job_id).first()
return render(request,'jobs/detail.html',{
'job': job,'status': status,'status_form': status_form,})
def signup(request):
error_message = ''
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
user = form.save()
login(request,user)
return redirect('index')
else:
error_message = 'Invalid signup data - please try again'
form = UserCreationForm()
return render(request,'registration/signup.html',{'form': form,'error_message': error_message })
class JobCreate(LoginRequiredMixin,CreateView):
model = Job_application
fields = ['name','company','location','date','url','requirements','notes']
def form_valid(self,form):
form.instance.user = self.request.user
return super().form_valid(form)
class JobUpdate(LoginRequiredMixin,UpdateView):
model = Job_application
fields = ['name','notes']
class JobDelete(LoginRequiredMixin,DeleteView):
model = Job_application
success_url = '/jobs/'
def add_status(request,job_id):
form = StatusForm(request.POST)
if form.is_valid():
new_status = form.save(commit=False)
new_status.job_id = job_id
new_status.save()
return redirect('detail',job_id=job_id)
这是我的表格
from .models import Status
class StatusForm(ModelForm):
class Meta:
model = Status
fields = ['date','status']
这是我的detail.html
{% block content %}
<h1>Job Application Details</h1>
<div class="row">
<div class="card">
<div class="card-content">
<p><b>Job Title:</b> {{ job.name }}</p>
<p><b>Company:</b> {{ job.company }}</p>
<p><b>Location:</b> {{ job.location }}</p>
<p><b>Date Applied:</b> {{ job.date }}</p>
<p><b>Status:</b> {{ status }}</p>
</div>
</div>
<div class="card">
<div class="card-detail">
<form action="{% url 'add_status' job.id %}" method="post">
{% csrf_token %}
{{ status_form.as_p }}
<input type="submit" value="Update Status" class="btn">
</form>
<table class="striped">
<thead>
<tr><th>Date</th><th>Status</th></tr>
</thead>
<tbody>
{% for status in job.status_set.all %}
<tr>
<td>{{ status.date }}</td>
<td>{{ status.get_status_display}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<div class="card">
<div class="card-content">
<h5>Requirements</h5>
<p>
{{ job.requirements }}
</p>
</div>
</div>
<div class="card">
<div class="card-content">
<h5>Notes</h5>
<p>
{{ job.notes }}
</p>
</div>
</div>
<a href="{% url 'jobs_update' job.id %}">Edit</a>
<a href="{% url 'jobs_delete' job.id %}">Delete</a>
</div>
<script>
// create datepicker
var dateEl = document.getElementById('id_date');
M.Datepicker.init(dateEl,{
format: 'yyyy-mm-dd',defaultDate: new Date(),setDefaultDate: true,autoClose: true,});
</script>
{% endblock %}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。