不能分配必须是用户实例Django



我已经为表单提交创建了一个模型,该模型正常,我想创建一个新模型,以使用 forefer的表单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",USER"必须是" HighSertudiesForms"实例。/strong>

正如错误所说:

value error:无法分配"用户:ahssu":" phddocument.user"必须是" highSertudiesForms"实例。

您试图为用户字段分配的实例与用户字段接受的实例不同。

在您的模型中:

user = models.ForeignKey(HigherStudiesForms, on_delete=models.PROTECT, null=True, blank=True)

用户字段指向HigherStudiesForms,而request.user将从User模型返回实例。

您可以更改默认用户模型,但是与您提供的错误并非如此。

要么将用户字段中的HigherStudiesForms更改为User,要么在序列化器中传递HigherStudiesForms实例。

from django.contrib.auth.models import User
class PHDDocument(models.Model):
    user = models.ForeignKey(User, on_delete=models.PROTECT, null=True, blank=True)
    ...

最新更新