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
Post a Comment