python - How to create ModelForm with objects that are owned by a particular user -


possible duplicate:
how filter foreignkey choices in django modelform?

say have models this:

from django.db import models django.contrib.auth.models import user class author(models.model): first_name = models.charfield(max_length=100) last_name = models.charfield(max_length=100) owner = models.foreignkey(user) class book(models.model): title = models.charfield(max_length=100) authors = models.manytomanyfield(author) owner = models.foreignkey(user) 

if create modelform book model, users allowed select all authors, not ones own. how create modelform book model lets user select authors s/he owns?

you can override model form's __init__ method , restrict queryset author model choice field.

class bookform(forms.modelform): class meta: model = book # exclude owner , set in view exclude = ('owner',) def __init__(self, *args, **kwargs): super(bookform, self).__init__(*args, **kwargs) if self.instance.owner: self.fields['author'].queryset = author.objects.filter(owner=self.instance.owner) 

in view, make sure instantiate form instance has owner set. example add book, this:

def add_book(request): book = book(owner=request.owner) form = bookform(data=request.post or none, instance=book) if form.is_valid(): book.save() return httpresponseredirect('/success-url/') return render(request, "my_template.html", {'form': form}) 

Comments

Popular posts from this blog

javascript - backbone.js Collection.add() doesn't `construct` (`initialize`) an object -

c++ - Accessing inactive union member and undefined behavior? -

php - Get uncommon values from two or more arrays -