Исключение NoReverseMatch Django
Итак, я столкнулся с исключением NoReverseMatch в моем приложении Django. Оно показывает мне этот тип исключения: Reverse for 'user-profile' with arguments '('',)' not found. Попробован 1 шаблон(ы): ['profile/(?P[^/]+)/$']
feed_component.html код:
<div>
{% for room in rooms %}
<div>
{% if request.user == room.host %}
<a href="{% url 'update-room' room.id %}">Edit</a>
<a href="{% url 'delete-room' room.id %}">Delete</a>
{% endif %}
<a href="{% url 'user-profile' room.host.id %}">@{{room.host.id}}</a>
<h5>{{room.id}} --> <a href="{% url 'room' room.id %}">{{room.name}}</a></h5>
<small>{{room.topic.name}}</small>
<hr>
</div>
{% endfor %}
Больше всего меня удивило то, что в:
<a href="{% url 'user-profile' room.host.id %}">@{{room.host.id}}</a>
@{{room.host.id}} выводит именно то, что я хочу на странице - id. Но эта часть:
{% url 'user-profile' room.host.id %}"
Бросает исключение... и когда я меняю его на:
<a href="{% url 'user-profile' room.host %}">@{{room.host.id}}</a>
Нет исключений, все работает нормально, но мне действительно нужен этот идентификатор...
urls.py
path('profile/<str:pk>/', views.userProfile, name="user-profile"),
views.py
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}
return render(request, 'baseapplication/profile.html', context)
models.py
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)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
Есть идеи?