【发布时间】:2019-03-20 20:47:08
【问题描述】:
我创建了一个工作正常的表单提交模型,我想创建一个基于相应表单的新模型提交文档,使用表单 ID 作为文档中的 外键型号
我的文档模型如下:
class PHDDocument(models.Model):
user = models.ForeignKey(HigherStudiesForms, on_delete=models.PROTECT, null=True, blank=True)
admission_letter = models.FileField(blank=False, null=False)
award_letter = models.FileField(blank=False, null=False)
attested_degree = models.FileField(blank=False, null=False)
cv = models.FileField(blank=False, null=False)
travel_agent = models.FileField(blank=False, null=False)
surety_bond = models.FileField(blank=False, null=False)
attested_surety_bond = models.FileField(blank=False, null=False)
guarantee_cnic = models.FileField(blank=False, null=False)
study_leave = models.FileField(blank=False, null=False)
objection_certificate = models.FileField(blank=False, null=False)
hod_form = models.FileField(blank=False, null=False)
rector_form = models.FileField(blank=False, null=False)
def __str__(self):
return str(self.admission_letter)
以下模型的查看方法如下:
class PHDFileView(viewsets.ModelViewSet):
permission_classes = (IsAuthenticated,)
lookup_field = 'pk'
lookup_url_kwarg = 'form_id'
serializer_class = PHDDocumentSerializer
def get_queryset(self):
queryset = PHDDocument.objects.all()
return queryset
def perform_create(self, serializer):
serializer.save(user=self.request.user)
序列化方法如下:
class PHDDocumentSerializer(serializers.ModelSerializer):
class Meta:
model = PHDDocument
fields = ('id', 'admission_letter', 'award_letter', 'attested_degree', 'cv', 'travel_agent', 'surety_bond',
'attested_surety_bond', 'guarantee_cnic', 'study_leave', 'objection_certificate', 'hod_form',
'rector_form')
当我通过 Angular Django 提交表单后提交文档时,出现以下错误 “ValueError:无法分配“用户:ahssu”:“PHDDocument.user”必须是“HigherStudiesForms”实例。”
【问题讨论】:
-
在您的
PHDDocument模型中,user字段被引用到HigherStudiesForms类。但是,在PHDFileView的perform_create()方法中,您分配了不同的值,这是不允许的
标签: django django-rest-framework django-views