健康应用程序:为特定患者保存的数据正在其他患者的详细视图中显示

时间:2017-11-14 02:11:11

标签: django python-3.x django-models

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

我的应用包含IdentitySymptomIdentitySymptom型号。

ManyToManyFieldIdentity之间存在Symptom

IdentitySymptom 模型包含两个ForeignKey字段,每个字段引用标识症状模型。

在我的观察文档中,我使用了基于类的视图来确保我创建的每个症状对象都附加到患者身上。

  

问题

鉴于ManyToManyField关系,如果我更新symptom object,那么当然会更新与patients objects相关的所有symptom object。问题在于,当我创建新的patient object时,该对象自动具有先前创建的患者的症状对象。那是一个错误。新的患者对象不应该有任何症状,因为我还没有创建与它相关的symptom object

每个nomenclaturedescription字段都应附加到为其创建的患者对象。但是,每次填充和保存字段时,所有创建的患者中都会看到nomenclaturedescription,这不是我想要的。

在Tashoy和Qadi之下,nomenclaturedescription相同,但我只点击了Tashoy Beckford锚标nomenclaturedescription

如何确保只有Tashoy Beckford拥有Symptom object数据。

基本上我想确保相关症状与相关患者有关。

enter image description here enter image description here

enter image description here enter image description here

  

以下是代码:

模型

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')

class Symptom(models.Model):

    nomenclature = models.CharField(max_length = 80, default = '')
    description = models.TextField(max_length = 1000, default = '')

class IdentitySymptom(models.Model):

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

视图

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)

0 个答案:

没有答案