0

J'urlPattern avec idcomment obtenir une variable de l'url à la méthode du formulaire - enregistrer?

... 
url(r'^3/(?P<id>[-\w]+)', Biochemical_analysis_of_blood.as_view(),\ 
    name='biochemical_analysis_view'), 
... 

views.py

class Biochemical_analysis_of_blood(CreateView): 
    model = BiochemicalAnalysisOfBlood 
    form_class = BiochemicalAnalysisOfBloodForm 
    template_name = "biochemical_analysis_of_blood.html" 
    success_url = reverse_lazy("patients") 

    def get_context_data(self, **kwargs): 
     context = super(Biochemical_analysis_of_blood, self).get_context_data(**kwargs) 
     context["patient"] = Patient.objects.get(id=self.kwargs['id']) 
     context["caption"] = 'Біохімічний аналіз крові' 
     context["new"] = True 
     return context 

forms.py

class SaveForms(): 
    def save(self, commit=True): 
     analysis = Analyzes() 
     sid = transaction.savepoint() 
     analysis.name = self.data["name"] 
     analysis.patient_id = Patient.objects.get(id=1) 
     analysis.who_send = self.data["who_send"] 
     analysis.who_is_doctor = self.data["who_is_doctor"] 
     analysis.lab_user_id = Doctor.objects.get(id=self.data["lab_user_id"]) 
     analysis.additional_lab_user = self.data["lab_user_add"] 
     analysis.date = self.data["date"] 
     analysis.type = 3 
     analysis.date_analysis = self.data["date_analysis"] 
     analysis.save() 
     # Your analysis is created, attach it to the form instance object 
     self.instance.analysis_id = analysis.id 
     return super().save(commit) 

Comment puis-je obtenir une variable "id" de la méthode URL pour former de - sauvegarder ? class SaveForms sera hérité par d'autres classes forms.models car elles doivent toutes avoir la même méthode de sauvegarde.

... 
    analysis.patient_id = Patient.objects.get(id=1) 
... 

Au lieu de "1" Je dois utiliser "id" de l'url ... Qui peut m'aider, s'il vous plaît?

class BiochemicalAnalysisOfBloodForm(SaveForms, forms.ModelForm): 
... 
+1

La quasi-totalité de votre méthode de sauvegarde est totalement inutile. C'est ce que font déjà les modelforms Django. –

+0

Pour le reste, voir https://docs.djangoproject.com/fr/1.11/topics/class-based-views/generic-editing/#models-and-request-user - il parle de request.user, mais le principe est exactement le même. –

Répondre