Created
September 16, 2015 14:41
-
-
Save maxmumford/69e54b7e36da78a34293 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class CustomModelForm(forms.ModelForm): | |
""" | |
Sandboxes user data for each reference field pointing to an | |
object with an "owner" field. | |
""" | |
def __init__(self, request, *args, **kwargs): | |
# cache the request object | |
self.request = request | |
init_result = super(CustomModelForm, self).__init__(*args, **kwargs) | |
# go through each field in this ModelForm | |
for field_name, field_widget in self.fields.iteritems(): | |
# find the model field definition | |
model_field = getattr(self.Meta.model, field_name, None) | |
if model_field: | |
# check if it has a related model | |
related_model = getattr(model_field.field, 'related_model', None) | |
if related_model: | |
# check if it has an owner field | |
owner_field = getattr(related_model, 'owner', None) | |
if owner_field: | |
# filter field objects by owner = logged in user | |
field_widget.queryset = related_model.objects.filter(owner=request.user) | |
return init_result |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment