django-使用外键作为链接

时间:2018-10-21 12:19:39

标签: django django-templates

所以我在如何从项目中的外键获取特定值方面遇到了一个问题。

我的模型。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而不是传递整个对象,就像这样?

0 个答案:

没有答案