Необходимо подтвердить, что пользователь отправил запрос, и отобразить результаты на странице пользователя, используя 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, статус будет показан как представленный на странице администратора, и он должен быть показан как ожидающий одобрения на странице пользователей. Как только администратор изменит статус на одобренный, он должен отображаться как одобренный на странице пользователей и не должен редактироваться пользователями после того, как они его отправили.
Я пробовал использовать приведенный выше код, но, похоже, я не смог достичь цели. Пожалуйста, помогите разобраться с этим, буду очень признателен, заранее спасибо.