Необходимо подтвердить, что пользователь отправил запрос, и отобразить результаты на странице пользователя, используя django rest framework

models.py

class Timelog(models.Model):

    STATUS_CHOICES = [
  ('s', 'Submitted'),
  ('p', 'Approval Pending'),
  ('a', 'Approved'),
]
    
    client=models.ForeignKey(Client,on_delete=CASCADE,related_name='client4',default=None)
    project=ChainedForeignKey(Project,chained_field="client", chained_model_field="client",show_all=False, auto_choose=True, sort=True)
    user= models.ForeignKey(User,on_delete=CASCADE,related_name='user2',default=None,blank=True,null=True)
    job=ChainedForeignKey(Job,chained_field="project", chained_model_field="project",show_all=False, auto_choose=True, sort=True,unique=True)
    date= models.DateField(default = datetime.date.today)
    hours=models.DurationField(default=datetime.timedelta(),null=True)
    status = models.CharField(max_length=20, choices=STATUS_CHOICES,null=False, default='Submitted')
    
    class Meta:
        db_table ='Timelog'
    
    def __str__(self):
        return '{}'.format(self.date)

admin.py

class Add_Timelog_Admin(admin.ModelAdmin):

    date_hierarchy = 'date'
    list_display = ('id','job','project','date','hours','status')
    list_filter = ['project']
    search_fields = ['date']
    actions = ['make_approved']

    def get_queryset(self, request):
        qs = super().get_queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(user__id=request.user.id)
    pass

    def make_approved(self, request, queryset):
     queryset.update(status='a')

admin.site.register(Timelog, Add_Timelog_Admin)

В принципе, если пользователь нажимает на представленный выбор в поле статуса, который будет кнопкой в javascript, статус будет показан как представленный на странице администратора, и он должен быть показан как ожидающий одобрения на странице пользователей. Как только администратор изменит статус на одобренный, он должен отображаться как одобренный на странице пользователей и не должен редактироваться пользователями после того, как они его отправили.

Я пробовал использовать приведенный выше код, но, похоже, я не смог достичь цели. Пожалуйста, помогите разобраться с этим, буду очень признателен, заранее спасибо.

Вернуться на верх