Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get objects from a many to many field

I have an m2m field called "admins" inside a model and I need to obtain from a view all the selected entries in that field, which are user IDs. Then with the user IDs obtain the emails for every user. Is it possible?

The exact thing I want to do is to send a mass email to all the admins of a space inside this platform.

Spaces model:

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) 

View for sending just one email:

@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)) 
like image 595
CastleDweller Avatar asked Nov 12 '12 09:11

CastleDweller


People also ask

How take data from many-to-many field in Django?

A ManyToManyField in Django is a field that allows multiple objects to be stored. This is useful and applicable for things such as shopping carts, where a user can buy multiple products. To add an item to a ManyToManyField, we can use the add() function.

What's an example of a many-to-many relationship that would work well with Django's ManyToManyField?

When you design a database for a large product, it is inevitable to arrive at a point where you have two models that are related to each other in a way that does not get solved using a ForeignKey alone. A good example of a many-to-many relationship is the relationship between a sandwich and a sauce.

What is objects all () Django?

For example, Blog.objects.all() returns a QuerySet that contains all Blog objects in the database.


1 Answers

You can use:

space.related.all() 

to return a QuerySet of User

like image 104
YardenST Avatar answered Sep 18 '22 17:09

YardenST