TypeError : 'manuscript' is an invalid keyword argument for this function

TypeError : 'manuscript' is an invalid keyword argument for this function

在我的健康应用程序中,我试图让用户输入患者症状数据并保存。

我的应用包含 IdentitySymptomIdentitySymptom 模型。

IdentitySymptom 之间存在 ManyToManyField。

IdentitySymptom 模型包含两个 ForeignKey 字段,每个字段都引用 IdentitySymptom 模型。

在我的视图文档中,我使用了基于 class 的视图来确保我创建的每个症状对象都与患者相关联。

问题:每次我创建一个症状对象并单击保存它时,它 returns 这个错误:

Traceback:

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/views/generic/base.py" in view
  68.             return self.dispatch(request, *args, **kwargs)

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/views/generic/base.py" in dispatch
  88.         return handler(request, *args, **kwargs)

File "/Users/iivri.andre/vision_Map/iivri/script/views.py" in post
  115.             medical_key = IdentitySymptom.objects.create(patient = patient, manuscript = manuscript)

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/manager.py" in manager_method
  85.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/query.py" in create
  392.         obj = self.model(**kwargs)

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/base.py" in __init__
  573.                 raise TypeError("'%s' is an invalid keyword argument for this function" % list(kwargs)[0])

Exception Type: TypeError at /script/medical-document/O910231/
Exception Value: 'manuscript' is an invalid keyword argument for this function

我已经从我的 Identity 模型创建了患者对象。

class Identity(models.Model):

    NIS =models.CharField(max_length = 200, primary_key = True)
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    time_patient_creation = models.DateTimeField(auto_now = True)
    first_name = models.CharField(max_length = 80, null = True)
    last_name = models.CharField(max_length = 80, null = True )
    contact = models.CharField(max_length = 15, null = True)
    location  = models.CharField(max_length = 100, blank = True)
    born = models.DateField(auto_now = False, auto_now_add = False, blank = True, null = True)

    patient_key = models.ManyToManyField('Symptom')

我还从 Symptom 模型

创建了 Symptom 对象

我还创建了一个包含 ForeignKey 字段的 IdentitySymptom 模型

class IdentitySymptom(models.Model):

    identity = models.ForeignKey(Identity)
    key_medical = models.ForeignKey(Symptom)

这是我的观点文档,基于 class 的观点

from django.shortcuts import render, redirect
from django.views.generic import CreateView, ListView
from script.forms import  IdentityForm, MedicalForm


from script.models import Identity, Symptom, IdentitySymptom





class Identity_view(CreateView):


    model = Identity

    template_name = 'script/script.html'


    def get(self, request):



        form = IdentityForm()


        script = Identity.objects.filter(user = request.user)


        var = {'form':form, 'script':script}


        return render(request, self.template_name, var)


    def post(self, request):

        form = IdentityForm(request.POST)


        being = None



        if form.is_valid():


            NIS = form.save(commit = False)
            #
            NIS.user = request.user

            NIS.save()


            being = form.cleaned_data['NIS']

            form = IdentityForm()

            return redirect('script:script')

        var = {'form': form, 'being':being }


        return render(request, self.template_name, var)


class Identity_list_view(ListView):

    model = Identity

    template_name = 'script/identity_list.html'

    def get(self, request):

        form = IdentityForm()

        script = Identity.objects.filter(user = request.user)

        var = {'form':form, 'script':script}
        return render(request, self.template_name, var)


class Medical_document(CreateView):

    model = Symptom

    template_name = 'script/medical_document.html'

    def get(self, request, pk):

        form = MedicalForm

        script = Symptom.objects.all()
        var = {'form':form, 'script':script, 'pk':pk}

        return render(request, self.template_name, var)


    def post(self, request, pk):




        form = MedicalForm(request.POST)

        state = None

        if form.is_valid():



            manuscript = form.save(commit = False)

            manuscript.user = request.user


            state = form.cleaned_data['description']


            manuscript.save()





            patient = Identity.objects.get(pk=pk)

            medical_key = IdentitySymptom.objects.create(patient = patient, manuscript = manuscript)

            medical_key.patient.patient_key.add(manuscript)

            form = MedicalForm()

            redirect('script:script')

        else:
            print(form.errors)

        var = {'form': form, 'state': state, 'pk':pk}

        return render(request, self.template_name, var)

这一行

medical_key = IdentitySymptom.objects.create(patient = patient, manuscript = manuscript)

引发错误,因为 IdentitySymptom 没有稿件字段。

根据您的定义,

class IdentitySymptom(models.Model):

    identity = models.ForeignKey(Identity)
    key_medical = models.ForeignKey(Symptom)

您只能分配 identitykey_medical

我可以看到 patient 是一个 Identity 实例,假设手稿是 Symptom,那么你实际上想做

medical_key = IdentitySymptom.objects.create(identity = patient, key_medical = manuscript)