Menampilkan Data Sesuai Dengan Session Login Di Django

Yeyeye, kali ini saya membahas django lagi, ya karena sedang ada project besar dan saya lagi membuat sebuah pola aplikasi. Pembahasan kali ini adalah bagaimana caranya saya menampilkan entry data sesuai dengan siapa yang mengentry. Nah Disini kita hanya bekerja di class admin.py ya guys.
Pada class kalian yang hendak diproses tambahkan script dibawah ini :

def get_queryset(self, request):
        qs = super(ParticipantsAdmin, self).get_queryset(request)
        return qs.filter(user_id=request.user)

Penjelasaannya adalah

def get_queryset(self, request):
        qs = super(NamaClassAdmin, self).get_queryset(request)
        return qs.filter(fieldUserdiClass=request.user) 

Ini adalah contoh script saya secara keseluruhan

admin.py

class ParticipantsAdmin (admin.ModelAdmin):
    list_display = [‘id’, ‘name’, ’email’, ‘status’, ‘types’, ‘createdAt’, ‘userby’]
    list_filter = (‘status’,)
    search_fields = [‘name’, ’email’, ‘status’, ‘types’]
    list_per_page = 15
    ordering = (‘id’,)
    def userby(self, obj):
        return obj.user.username
    def get_queryset(self, request):
        qs = super(ParticipantsAdmin, self).get_queryset(request)
        return qs.filter(user_id=request.user)

admin.site.register(Participants, ParticipantsAdmin) 

model.py

class Participants (models.Model):
    STATUS_CHOICES = (
        (‘Y’, ‘Enabled’),
        (‘N’, ‘Disabled’),
    )
    TIPE_CHOICES = (
        (‘P’, ‘Perusahaan’),
        (‘O’, ‘Perorangan’),
    )
    types = models.CharField(max_length=1, choices=TIPE_CHOICES, blank=False)
    name = models.CharField(verbose_name=”Name or Caption”, max_length=250, blank=False)
    email = models.EmailField(verbose_name=”Mail Address”, max_length=150, blank=False)
    phone = models.CharField(verbose_name=”Phone Number”, max_length=50,blank=True)
    fax = models.CharField(verbose_name=”Fax Number”, max_length=50, blank=True)
    provinsi = models.ForeignKey(Provinces, verbose_name=”Province”, blank=True)
    address = models.TextField(blank=True)
    website = models.CharField(verbose_name=”Website Profile”, max_length=250, blank=True)
    status = models.CharField(max_length=1, choices=STATUS_CHOICES, blank=False, default=’N’)
    createdAt = models.DateTimeField(verbose_name=”Create Date”, auto_now_add=True, blank=False)
    updatedAt = models.DateTimeField(verbose_name=”Update Date”, auto_now_add=True, blank=False)
    #user = models.ForeignKey(User)
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    def __unicode__(self):
        return self.name
    class Meta:
        ordering = [‘name’]
        verbose_name_plural = ‘Participants’ 

Bagaimana mudah bukan ?

Leave a Reply

Your email address will not be published. Required fields are marked *