Django: Показать данные текущего пользователя

У меня проблема с отображением данных текущего пользователя. Он показывает все смены, которые были даны другим пользователям тоже. У меня нет идей, как это сделать. Ниже приведен мой код.

models.py

class User(models.Model):
    user_name = models.CharField(max_length=32, unique=True)
    pass_word = models.CharField(max_length=150)
    is_active = models.BooleanField(default=True)

class Rostering(models.Model):
    name = models.CharField(max_length=64)
    begin_time = models.TimeField(default="")
    end_time = models.TimeField(default="")
    is_active = models.BooleanField(default=True)

class RosteringUser(models.Model):
    rostering_user = models.ForeignKey(Rostering, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

views.py

def my_shift(request):
    if request.method == 'GET':
        queryset = RosteringUser.objects.all()
        if queryset:
            for obj in queryset:
                id = Rostering.objects.get(rosteringuser=obj.id)
                obj.id = id
            return render(request, 'my_shift.html', {'queryset': queryset})

my_shift.html

{% for obj in queryset %}
<tr>
    <td>{{ obj.user.user_name }}</td>
    <td>{{ obj.id.name }}-{{ obj.id.begin_time }}</td>
    <td>{{ obj.id.name }}-{{ obj.id.end_time }}</td>
</tr>
{% endfor %}

Заранее спасибо!

Просто вы можете попробовать следующим образом:

         if queryset:
            for obj in queryset:
                id = Rostering.objects.get(rosteringuser=obj.id)
                obj.id = id
                querysets = obj
            return render(request, 'my_shift.html', {'querysets': querysets})

А в шаблонах:

{% for object in querysets %}
<tr>
    <td>{{ object.user.user_name }}</td>
    <td>{{ object.id.name }}-{{ object.id.begin_time }}</td>
    <td>{{ object.id.name }}-{{ object.id.end_time }}</td>
</tr>
{% endfor %}
def my_shift(request):
    if request.method == 'GET':
        rost_id = RosteringUser.objects.filter(user_id=request.user.id).values("rostering_user_id").first()
        if rost_id :
           data = Rostering.objects.get(id=rost_id['rostering_user_id'])
           return render(request, 'my_shift.html', {'queryset': data })

в шаблоне вы можете напрямую отображать имя пользователя, вошедшего в систему {{ request.user.first_name }}

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