IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

probleme de modification d'un model


Sujet :

Django Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2021
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2021
    Messages : 23
    Points : 14
    Points
    14
    Par défaut probleme de modification d'un model
    je suis sur Django, je veux faire une modification sur un model malheureusement cela ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
       ma vu
     
    def entiteasigne(request, pk):
        entite_utilisateur = request.user.entite
        ticket = get_object_or_404(Ticket,reference=pk)
     
        form=Ticket_assigne(entite_utilisateur,instance=ticket)
     
        if request.method=='POST':
            form=Ticket_assigne(entite_utilisateur,request.POST,instance=ticket)
            if form.is_valid():
                ticket.statut='En cours'
                form.save()
                print(f"assigne_a value of Ticket instance after save: {ticket.assigne_a}")
                return redirect('profil_entite')
            else:
                messages.error(request,"Veuillez corriger l'errreur ci-dessous")
                error_field=form.errors.keys
        else:
            form=Ticket_assigne(entite_utilisateur,instance=ticket)
     
        context={'form':form,'ticket':ticket}
        return render(request,'tikets/entité_affect_page.html',context)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    forms.py
     
    class Ticket_assigne(forms.ModelForm):
        def __init__(self, entite_utilisateur, *args, **kwargs):
            super(Ticket_assigne, self).__init__(*args, **kwargs)
            User = get_user_model()
     
            # Filtrer les utilisateurs en fonction de l'entité de l'utilisateur connecté
            self.fields['assigne_a'].queryset = User.objects.filter(entite=entite_utilisateur)
     
        class Meta:
            model = Ticket
            fields = ['sujet', 'description', 'assigne_a','categorie','module','application','soumettre_entite','ref_mantis','dim']
     
            widgets = {
                'description': Textarea(attrs={'rows': 4, 'readonly': 'readonly'}),
                'sujet': forms.TextInput(attrs={'readonly': 'readonly'}),
                'assigne_a': forms.Select(attrs={'class': 'form-control', 'required': 'required'}),
                'application':forms.Select(attrs={'class':'form-control','readonly': 'readonly'}),
                'categorie':forms.Select(attrs={'class':'form-control','readonly': 'readonly'}),
                'module':forms.Select(attrs={'class':'form-control','readonly': 'readonly'}),
                'soumettre_entite':forms.Select(attrs={'class':'form-control','readonly': 'readonly'}),
            }
    mon champs assigne_a

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 895
    Points : 7 254
    Points
    7 254
    Par défaut
    Bonjour,

    Rien ne doit être fait dans un ModelForm que récupération de données, le traitement se fait dans la vue. Relisez la documentation sur ce sujet...

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2021
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2021
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Bonjour,

    Rien ne doit être fait dans un ModelForm que récupération de données, le traitement se fait dans la vue. Relisez la documentation sur ce sujet...
    je suis bien dans une vue j'ai partager le model et la vue pour soutenir ma requette.

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 895
    Points : 7 254
    Points
    7 254
    Par défaut
    Oui j'ai vu mais c'est quoi cette partie ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class Ticket_assigne(forms.ModelForm):
        def __init__(self, entite_utilisateur, *args, **kwargs):
            super(Ticket_assigne, self).__init__(*args, **kwargs)
            User = get_user_model()
     
            # Filtrer les utilisateurs en fonction de l'entité de l'utilisateur connecté         
            self.fields['assigne_a'].queryset = User.objects.filter(entite=entite_utilisateur)
    Garder la logique métier spécifique, comme le filtrage des données, dans la vue plutôt que dans le formulaire aide à maintenir une séparation claire entre la présentation des données (formulaire) et la manipulation ou le traitement des données (vue).
    Cela rend le code plus lisible et plus facile à maintenir, car la vue contrôle le flux de données et leur préparation avant de les passer au formulaire.

    ----------------

    Bon en admettant, que tout est fonctionnel, le statut ne peut pas être modifié, car tu ne sauves pas le ticket après ticket.statut='En cours'

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/03/2016, 10h17
  2. problème de modification model de donnée
    Par guiyomh dans le forum Django
    Réponses: 6
    Dernier message: 13/10/2010, 10h56
  3. Réponses: 19
    Dernier message: 28/10/2005, 17h29
  4. Réponses: 3
    Dernier message: 01/09/2005, 11h56
  5. [débutant] Problème JSplitPane (modif :InternalFrame)
    Par pingoui dans le forum Agents de placement/Fenêtres
    Réponses: 61
    Dernier message: 03/09/2004, 17h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo