Так что у меня возникла небольшая проблема с тем, как получить определенное значение из внешнего ключа в моем проекте.
my models.py
class Category(models.Model):
category_name = models.CharField(max_length=50)
def __str__(self):
return self.category_name
class Frame(models.Model):
banner = models.CharField(max_length=50)
description = models.TextField(null=False, blank=False)
date_created = models.DateTimeField(default=datetime.now, editable=False)
user_id = models.ForeignKey(User, null=True, related_name='+', on_delete=models.CASCADE)
category = models.ForeignKey('Category', on_delete=models.SET_NULL, null=True)
def __str__(self):
return str(self.banner)
мои URL.py
app_name = 'frames_app'
urlpatterns = [
path('frame-<int:pk>', views.single_frame, name='f_detail'),
path('category/<str:category>', views.category_filter, name="f_category")
]
my views.py
def category_filter(request, category):
frames = Frame.objects.filter(category=category)
return render(request, 'frames_app/category_frames.html', { 'frames': frames })
мой HTML-файл
{% for frame in frames %}
<h2><a href="{% url 'frames_app:f_detail' pk=frame.pk %}">{{frame.banner}}</a></h2>
<p>{{frame.ad_description}}</p>
<p><a href="{% url 'frames_app:f_category' category=frame.category %}">{{frame.category}}</a></p>
<p>Dated {{frame.date_created}}</p>
{% endfor %}
Я получаю эту ошибку при попытке получить доступ к странице:
invalid literal for int() with base 10: 'somecategory'
«somecategory» - это объект категории.
Так как же я смогу получить доступ только к названию category_name для передачи в django вместо передачи всего объекта, как кажется, имеет место.