Hi,

I would like to access the request.user in a ModelAdmin function, so I can 
filter the results of a query based on the logged in user. I have these 
models:

class Speaker(models.Model):
    name = models.CharField(max_length=50)
    endorsements = models.ManyToManyField(User,
                                                                   
 through="Endorsement")

class Endorsement(models.Model):
    speaker = models.ForeignKey('Speaker')
    user = models.ForeignKey(User)
    endorsed = models.NullBooleanField()

    class Meta:
        unique_together = ("speaker", "user")

User comes from django.contrib.auth.models. In the ModelAdmin, I would like 
to have this:

class SpeakerAdmin(admin.ModelAdmin):
    def is_endorsed(self, obj):
        
        endorsement = Endorsement.objects.get(speaker=obj,
                                                              
user=request.user)
        return endorsement.endorsed

So then I could just add "is_endorsed" to the list_display variable to have 
the endorsement status for that user in the Speaker list, in the Admin 
site. Of course, this doesn't work because request isn't available in the 
is_endorsed function. I googled around and saw solutions for similar 
problems involving overrides of save_model, queryset or 
formfield_for_manytomany, but I couldn't adapt them to list_display, 
because I'm creating a function in the ModelAdmin, where I only know how to 
pass self and obj. Suggestions?

Thanks,
Paulo Almeida

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/django-users/-/Nve_nfYdC5cJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to