2016-03-12 1 views
0

J'essaye d'ajouter quelques utilisateurs, dans mon projet Django, à mon groupe avant créé, mais je sais comment ajouter au groupe spécifique dont je connais le nom et ce n'est pas dynamique . Je voudrais que lorsque je sélectionne un groupe spécifique, déjà ajouter l'utilisateur suivant. Le problème est ici:Ajouter des utilisateurs au groupe spécifique dans Django

g = Group.objects.get(name= 'New') 

Que dois-je faire pour remplacer ceci et indiquer ce groupe sur lequel j'ai cliqué?

views.py:

@login_required 
def choose_group(request, pk): 

if request.method == "POST": 

    cvs = get_object_or_404(Cv, pk=pk) 

    p = Person.objects.create(name=cvs.author) 
    g = Group.objects.get(name= 'New') 
    m = Membership.objects.create(person=p, group=g, leader=False) 


    return redirect('proj.views.cv_detail', pk=cvs.pk) 







else: 
    cv = Cv.objects.filter(author = request.user) 
    cvs = get_object_or_404(Cv, pk=pk) 
    mem = Membership.objects.all() 

    context = { 

     'mem':mem, 
     'cvs':cvs, 
     'cv':cv 
    } 

    return render(request, 'choose_group.html', context) 

models.py:

class Person(models.Model): 
    name = models.CharField(max_length=128) 

    def __str__(self):    # __unicode__ on Python 2 
     return self.name 


class Group(models.Model): 
    name = models.CharField(max_length=128) 
    members = models.ManyToManyField(Person, through='Membership') 

    def __str__(self):    # __unicode__ on Python 2 
     return self.name 


class Membership(models.Model): 
    person = models.ForeignKey(Person) 
    leader = models.BooleanField(default=False) 
    group = models.ForeignKey(Group) 

choose_groups.html:

{% block profile %} 

    <div class="jumbotron"> 
    <h3>Choose a group to add:</h3> 
    </div>   

    <ul> 
    {% for m in mem %} 
    <form method="POST" class="post-form" >{% csrf_token %} 
     <li><button type="submit" class="li1"> <b>{{ m.group }}</b></li> 

    </form> 
    {% endfor %} 
    </ul> 


{% endblock %} 

Répondre

0

Le principal problème que je vois ici est que vous n'envoyez pas la nom du groupe m.group à partir de votre code html. de le faire, vous devez ajouter le nom et la valeur à l'élément de bouton dans votre code html (et ne pas oublier de fermer l'élément de bouton)

<button type="submit" class="li1" name="group" value="{{m.group}}"> <b>{{ m.group }}</b></button> 

Ensuite, vous pouvez récupérer cette valeur de groupe dans votre views.py en utilisant request.POST

g = Group.objects.get(name=request.POST['group']) 
+0

MERCI BEAUCOUP! :) – Damian