Я уже пытался сохранить внешний ключ ModelForm, но я получил эту ошибку:Правильный способ сохранить внешний ключ ModelForm
The LabRequestForm could not be created because the data didn't validate.
Вот мой код:
model.py
class LabRequestForm(models.Model):
# lab request form
product_name = models.ForeignKey(ProductName, on_delete=models.CASCADE)
ref_no = models.CharField(max_length=200, unique=True)
date = models.DateTimeField()
batch_number = models.CharField(max_length=200, unique=True)
sampling_time = models.DateTimeField()
lab_test_number = models.CharField(null=True, max_length=200)
forms.py
class LabRequestModelForm(ModelForm):
class Meta:
model = LabRequestForm
fields = '__all__'
views.py
@login_required
def sampler(request):
detect_user = Account.objects.get(id=request.user.id)
if detect_user.is_sampler:
if request.method == "POST":
prod_name = ProductName.objects.get(product_name=request.POST.get('product_name'))
lab_req_form = LabRequestModelForm(request.POST)
lab_req_form_obj = lab_req_form.save(commit=False)
lab_req_form_obj.product_name = prod_name
if lab_req_form_obj.is_valid():
lab_req_form_obj.save()
messages.info(request, 'Form Saved')
else:
print('not valid')
messages.error(request, "Form is not valid")
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
Вручную я проверил все данные POST, они были верны. Поэтому я подозреваю, что главным виновником является lab_req_form.save(commit=False)
.
Применяя ваше предложение, я получаю недопустимую форму. Он говорит, что моя форма недействительна – pyprism
@pyprism это означает, что ваша форма не подтвердилась. Это целая другая проблема и не связана с вашим поиском –