Я только что развернул свое первое приложение Django, предназначенное для небольшой компании, в которой я работаю, чтобы отслеживать рабочие места, расходы, и у него есть блог, чтобы клиенты могли его увидеть.После того, как я развернул сайт, я понял, что страница для редактирования модели задания не отображает информацию о задании, а представляет собой пустую форму для нового экземпляра.Когда редактирование отправлено, оно создает новый экземпляр вместо изменения текущего задания, которое должно быть отредактировано.Редактирование прекрасно работает через панель администратора, но я просто не могу понять, почему страница редактирования не работает.
Я попытался настроить функцию просмотра для редактирования задания, удаления миграций и базы данных, иповторная миграция, все безрезультатно.
views.py
def job_edit(request, pk):
if request.user.is_authenticated:
job = get_object_or_404(Job, pk=pk)
if request.method == "POST":
form = JobForm(request.POST, request.FILES)
if form.is_valid():
job = form.save(commit=False)
job.author = request.user
job.last_updated = timezone.now()
job.image0 = form.cleaned_data['image0']
job.image1 = form.cleaned_data['image1']
job.image2 = form.cleaned_data['image2']
job.image3 = form.cleaned_data['image3']
job.save()
messages.success(request, 'Job updated successfully')
return redirect('job_detail', pk=job.pk)
else:
form = JobForm()
return render(request, 'job_edit.html', {'form': form})
else:
return render(request, 'job_edit.html')
forms.py
class JobForm(forms.ModelForm):
foreman = forms.ChoiceField(choices=FOREMEN, required=True)
status = forms.ChoiceField(choices=JOB_STATUS, required=True)
zip = forms.IntegerField(validators=[MinValueValidator(00000), MaxValueValidator(99999)])
class Meta:
model = Job
fields = ('title', 'foreman', 'crew_size', 'status', 'text', 'truck', 'trailer', 'service', 'client_name', 'client_phone', 'client_email', 'client_source', 'estimated_days', 'schedule_date', 'address', 'town', 'state', 'zip', 'image0', 'image1', 'image2', 'image3')