(ИСПРАВЛЕНО) Не найдена реверсия для 'user-profile' с аргументами '('',)'. Испробован 1 шаблон(ы): ['profile/(?P<pk>[^/]+)/$'].

Я смотрю курс, и после того, как лектор использовал exclude = ['host', 'participants'] в Meta class, я получил эту ошибку, которая выделяет эту строку в шаблоне:

<a href="{% url 'user-profile' room.host.id %}">@{{room.host.username}}</a>

view:

def userProfile(request, pk):
    user = User.objects.get(id=pk)
    rooms = user.room_set.all()
    room_messages = user.message_set.all()
    topics = Topic.objects.all()
    context = {'user': user, 'rooms': rooms,
               'room_messages': room_messages,
               'topics': topics,
               'pk': pk}
    return render(request, 'base/profile.html', context)

Урлы:

path('profile/<str:pk>/', views.userProfile, name='user-profile'),
class Room(models.Model):
    host = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    topic = models.ForeignKey(Topic, on_delete=models.SET_NULL, null=True)
    name = models.CharField(max_length=200)
    description = models.TextField(null=True, blank=True)
    participants = models.ManyToManyField(User, related_name='participants', blank=True)

Я попытался удалить exclude = ['host'], но это не помогло. Затем я попытался добавить 'pk': pk к context в userProfile, но и это не помогло. Буду благодарен за помощь.

ИСПРАВЛЕНИЕ. Проблема заключалась в том, что у некоторых комнат не было хозяина, так как на этапе создания комнаты в функции createRoom была возможность не выбирать хозяина. Также для того, чтобы увидеть это, я использовал условие:

{% if room.host.id %}
<a href="{% url 'user-profile' room.host.id %}">@{{room.host.username}}</a>
{% endfor%}
Вернуться на верх