Как обновить запись и создать ту же запись в другой таблице в форме django
У меня есть 2 модели одна Tempdriver и другая Hiring, Я регистрирую нового клиента в таблице Tempdriver, мне нужно, чтобы когда я редактирую запись Tempdriver и статус (Принят) и когда я сохраняю эту запись, то нужно чтобы та же запись создавалась в таблице найма с соответствующим столбцом со статусом=(Применен в приложении) остальные столбцы должны быть нулевыми в таблице найма
>models.py
class Tempdriver(BaseModel):
name = models.CharField(max_length=255)
mobile = models.CharField(max_length=20,unique=True,null=True, blank=True)
alternate_number = models.CharField(max_length=20, null=True, blank=True)
date = models.DateField(null=True, blank=True)
address = models.CharField(max_length=200, null=True, blank=True)
status = EnumField(choices=['Accept','Reject','Hold'], null=True)
class Hiring(BaseModel):
STATUS_CHOICES = (('', 'Type...'),
('HR Interview Pass', 'HR Interview Pass'),
('HR Interview Fail', 'HR Interview Fail'),
('Allocation Completed', 'Allocation Completed'),
('Applied on app','Applied on app')
)
name = models.CharField(max_length=254, null=True, blank=True)
mobile = models.CharField(max_length=20,unique=True,null=True, blank=True)
city = models.ForeignKey(City, models.CASCADE, verbose_name='City', null=True, blank=True)
age = models.PositiveIntegerField(null=True, blank=True)
status = models.CharField(max_length = 255,choices=STATUS_CHOICES, null=True, blank=True)
forms.py
class TempDriverForm(forms.ModelForm):
class Meta:
model= Tempdriver
fields='__all__'
views.py
def edit_temp_driver(request,id=0):
tempdr=Tempdriver.objects.get(pk=id)
form= TempDriverForm(request.POST or None, request.FILES or None, instance=tempdr)
if form.is_valid():
edit = form.save(commit=False)
edit.save()
messages.success(request,'Driver data updated successfully!')
return redirect('/fleet/tempdr')
return render(request, 'hiringprocess/edit_tempdriver.html', {'form':form})
Во-первых, позвольте спросить, почему вы используете BaseModel вместо `models.Model'? (просто для информации, я просто хотел спросить в комментарии, но мне не разрешили)
Если я правильно понял ваш вопрос, ваша функция edit_temp_driver будет выглядеть примерно так:
def create_hiring_object(form):
try:
obj = Hiring()
obj.name = form.cleaned_data['name']
obj.mobile = form.cleaned_data['mobile']
obj.status = obj.STATUS_CHOICES[4]
obj.save()
except Exception as err:
# return error
return err
def edit_temp_driver(request,id=0):
tempdr=Tempdriver.objects.get(pk=id)
form= TempDriverForm(request.POST or None, request.FILES or None, instance=tempdr)
if form.is_valid():
edit = form.save(commit=False)
# call to create hiring
create_hiring_object(form)
edit.save()
messages.success(request,'Driver data updated successfully!')
return redirect('/fleet/tempdr')
return render(request, 'hiringprocess/edit_tempdriver.html', {'form':form})