【发布时间】:2020-05-07 00:23:40
【问题描述】:
我正在尝试以这样一种方式实现一个模型,即一个用户可以有多个提交,而一个提交只有一个 SubmissionData 类型的对象。
在模板上,用户将上传一个 PDF 文件,该 PDF 将被解析,与该提交相关的一些信息将存储在 SubmissionData 中,文件和一些主要信息将与 SubmissionData 相关联
这里是 models.py:
class Submission(models.Model):
submission_user = models.ForeignKey('auth.User',
related_name='submissions',
on_delete=models.CASCADE)
submission_file = models.FileField(upload_to='media/')
created_at = models.DateTimeField(auto_now=True)
def __str__(self):
user_submission = str(self.submission_user.username).lower()
user_submission = user_submission + '/' + str(timezone.now())
return user_submission
class Meta:
ordering = ['-created_at']
class SubmissionData(models.Model):
submission_code = models.OneToOneField(Submission,
related_name='data',
on_delete=models.CASCADE)
uuid = models.CharField(max_length=250, null=True)
patiente_name = models.CharField(max_length=250, null=True)
patiente_age = models.PositiveIntegerField(null=True)
patient_gender = models.CharField(max_length=20, null=True)
在我的 views.py 上:
class SubmissionCreateView(CreateView, LoginRequiredMixin):
form_class = SubmissionForm
template_name = 'submissions/submission_create.html'
success_url = reverse_lazy('submissions:list')
def proccess_submission_data(self):
parser = PDFParser('path-to-pdf').parse()
data_obj = parser.get_result()
submission_data = self.enconde(data_obj)
self.object.save()
submission_data.save()
def enconde(self, data_obj):
submission_data = SubmissionData(submission_code=self.object,
uuid=data_obj.uuid,
patiente_name=data_obj.patiente_name,
patiente_age=data_obj.patiente_age,
patient_gender=data_obj.patient_gender)
return submission_data
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.submission_user = self.request.user
self.proccess_submission_data()
return super().form_valid(form)
有谁知道导致这些错误的原因是什么?
【问题讨论】:
标签: python django django-models django-views one-to-one