所以我在如何从项目中的外键获取特定值方面遇到了一个问题。
我的模型。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)
我的urls.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")
]
我的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而不是传递整个对象,就像这样?