0
안녕하세요 저장시 중복 된 개체의 문제에 직면하고 있습니다. 어떻게 방지 할 수 있습니까?저장시 Django def post 복사 방지
미리 감사드립니다.
#models.py
class Candidate(models.Model):
user = models.OneToOneField(User, primary_key=True)
birth = models.CharField(max_length=50)
...
class Job(models.Model):
candidate = models.ManyToManyField('Candidate', through='CandidateToJob')
title = models.CharField(max_length=500)
...
class CandidateToJob(models.Model):
job = models.ForeignKey(Job, related_name='applied_to')
candidate = models.ForeignKey(Candidate, related_name='from_user')
STATUS_CHOICES = (
('1', 'Not approved'),
('2', 'Approved'),
('3', 'Hired')
)
status = models.CharField(max_length=2, choices=STATUS_CHOICES)
class Meta:
unique_together = ("candidate", "job")
여기보기
#views.py
class JobDetails(generic.DetailView):
model = Job
template_name = 'companies/job-detail.html'
form_class = ApplyForm
def get_context_data(self, **kwargs):
context = super(JobDetails, self).get_context_data(**kwargs)
context['company_detail'] = Company.objects.all()
return context
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
messages.success(request, 'Sucesso!')
if form.is_valid():
form.save(commit=False)
#create job
job = self.get_object(queryset=Job.objects.all())
#create candidate
candidate = Candidate.objects.get(pk=request.user)
#assign to the through table
candidatetojob = CandidateToJob.objects.create(job=job, candidate=candidate)
candidatetojob.save()
return HttpResponseRedirect('/jobs/')
그리고 unique_together에도 불구하고 형태
#forms.py
class ApplyForm(ModelForm):
class Meta:
model = CandidateToJob
exclude = ['candidate', 'job', 'status']
이며,이 함수는 항상 복제 객체를 저장합니다.
어떤 종류의 형식보기 대신 DetailView를 사용하고 있습니까? - 예 : UpdateView? –
안녕 다니엘. 나는 특정 작업과 세부 사항을 보여주고 싶다. 이 경우 updateview를 사용하는 것이 더 좋다고 생각하십니까? 내 말은, 비록 내가 updateview를 사용하더라도, post 메소드는 중복 된 엔트리를 유지한다는 것이다. –