Skip to content

Instantly share code, notes, and snippets.

@kennethlove
Created September 21, 2012 22:11
Show Gist options
  • Save kennethlove/3764237 to your computer and use it in GitHub Desktop.
Save kennethlove/3764237 to your computer and use it in GitHub Desktop.
from django.contrib.auth.models import User
from django.db import models
class UserGroup(models.Model):
name = models.CharField()
slug = models.SlugField()
owner = models.ForeignKey(User, related_name="groups")
members = models.ManyToManyField(User, through="Membership", related_name="groups")
class Membership(models.Model):
user = models.ForeignKey(User)
group = models.ForeignKey(UserGroup)
class Meta:
unique_together = ("user", "group")
# all groups where the current user is the owner
UserGroup.objects.filter(owner=request.user)
# all (imaginary) posts from members of any group the current user is in
Post.objects.filter(author=request.user.groups.members.all())
@jmitchel3
Copy link

views.py

def membership(request):
group = UserGroup.objects.filter(owner=request.user)
GroupFormSet = modelformset_factory(Group, form=GroupForm)
"""the ModelForm renders fine"""
if request.method == 'POST':
formset = GroupFormSet(request.POST, request.FILES, queryset=group)
if formset.is_valid():
myformset = formset.save(commit=False)
for form in myformset:
form.user = """ select user here via email """
myformset.save_m2m()
return render_to_response('formset.html', locals(), context_instance=RequestContext(request))
else:
formset= GroupFormSet(queryset=group)
return render_to_response('formset.html', locals(), context_instance=RequestContext(request))

@jmitchel3
Copy link

or...

for form in myformset:

@jmitchel3
Copy link

or...

for form in myformset:

@jmitchel3
Copy link

or...

for form in myformset:

form.owner = request.user
form.members = Members.objects.get_or_create(name=form.cleaned_data['members'])

?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment