Как получить идентификатор текущего счета в django models.py

  1. I want to get the id of the current account in django models.py. I know I can get the user object of the current account by adding 'request.user'. However, the function I am using requires the use of the self argument to be used in the condition, so 'request' cannot be used together. Please help.

[models.py]

class Leave(models.Model):
    name = models.CharField(max_length=50, blank=True, null=True)
    kind = models.CharField(choices=KIND_CHOICES, max_length=20, blank=True, null=True)
    from_date = models.DateField(blank=True, null=True)
    user = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True)


    @property
    def get_html_url(self):
        url = reverse('leave:leave_edit', args=(self.id,))

        if self.kind == 'Annual' and self.user.id == self.user_id:
            return f'<div class="Annual-title"><a href="{url}" style="color:black;"> {self.name} </a></div>'
        elif self.kind == 'Annual' and self.user.id != self.user_id:
            return f'<div class="Annual-title" data-toggle="modal" data-target="#leave_{self.id}"> {self.name} </div>'

  1. Does the method below work normally?

[models.py]

class Leave(models.Model):
    name = models.CharField(max_length=50, blank=True, null=True)
    kind = models.CharField(choices=KIND_CHOICES, max_length=20, blank=True, null=True)
    from_date = models.DateField(blank=True, null=True)
    user = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True)

    def user_id(request):      +++ add
        return request.user

   @property
    def get_html_url(self):
        url = reverse('leave:leave_edit', args=(self.id,))

        if self.kind == 'Annual' and self.user.id == Leave.user_id:
            return f'<div class="Annual-title"><a href="{url}" style="color:black;"> {self.name} </a></div>'
        elif self.kind == 'Annual' and self.user.id != Leave.user_id:
            return f'<div class="Annual-title" data-toggle="modal" data-target="#leave_{self.id}"> {self.name} </div>'

Я не могу понять, почему вы делаете это в models.py файле.

Вы можете получить идентификатор текущего счета в вашем views.py.

def yourfunction(request):
    ....
    user = request.user
    user_id = user.id
    ....
Вернуться на верх