update through one many example django django-models many-to-many django-orm

through - Django-obtener objetos de un campo de muchos a muchos



model many to many relationship django (2)

Tengo un campo m2m llamado "admins" dentro de un modelo y necesito obtener de una vista todas las entradas seleccionadas en ese campo, que son ID de usuario. Luego, con las ID de usuario, obtenga los correos electrónicos de cada usuario. ¿Es posible?

Lo que quiero hacer exactamente es enviar una publicación masiva a todos los administradores de un espacio dentro de esta plataforma.

Modelo de espacios:

class Space(models.Model): """ Spaces model. This model stores a "space" or "place" also known as a participative process in reality. Every place has a minimum set of settings for customization. There are three main permission roles in every space: administrator (admins), moderators (mods) and regular users (users). """ name = models.CharField(_(''Name''), max_length=250, unique=True, help_text=_(''Max: 250 characters'')) url = models.CharField(_(''URL''), max_length=100, unique=True, validators=[RegexValidator(regex=''^[a-z0-9_]+$'', message=''Invalid characters in the space URL.'')], help_text=_(''Valid characters are lowercase, digits and / admins = models.ManyToManyField(User, related_name="space_admins", verbose_name=_(''Administrators''), help_text=_(''Please select the / users that will be administrators of this space''), blank=True, null=True) mods = models.ManyToManyField(User, related_name="space_mods", verbose_name=_(''Moderators''), help_text=_(''Please select the users / that will be moderators of this space.''), blank=True, null=True) users = models.ManyToManyField(User, related_name="space_users", verbose_name=_(''Users''), help_text=_(''Please select the users that / can participate on this space''), blank=True, null=True)

Ver para enviar solo un correo electrónico:

@login_required def add_intent(request, space_url): """ Returns a page where the logged in user can click on a "I want to participate" button, which after sends an email to the administrator of the space with a link to approve the user to use the space. :attributes: space, intent, token :rtype: Multiple entity objects. :context: space_url, heading """ space = get_object_or_404(Space, url=space_url) #admins = space.admins?? try: intent = Intent.objects.get(user=request.user, space=space) heading = _("Access has been already authorized") except Intent.DoesNotExist: token = hashlib.md5("%s%s%s" % (request.user, space, datetime.datetime.now())).hexdigest() intent = Intent(user=request.user, space=space, token=token) intent.save() subject = _("New participation request") body = _("User {0} wants to participate in space {1}./n / Please click on the link below to approve./n {2}"/ .format(request.user.username, space.name, intent.get_approve_url())) heading = _("Your request is being processed.") send_mail(subject=subject, message=body, from_email="[email protected]", recipient_list=[space.author.email]) # Send a notification to all the admins in that space #send_mass_mail() return render_to_response(''space_intent.html'', / {''space_name'': space.name, ''heading'': heading}, / context_instance=RequestContext(request))


Para Django> = 1.9

space.admins.all()

* Como lo menciona Salvatore Iovene.


usted puede:

space.related.all() para devolver un QuerySet de usuario