我无法从猫和小猫模型中获得猫的名字和小猫的类型。
这是我的模特。py
class Cat(models.Model):
cat_name = models.CharField(max_length=200)
def __str__(self):
return self.cat_name
class Kitten(models.Model):
cat = models.ForeignKey(Cat, on_delete=models.CASCADE, related_name='kittens')
kitten_type = models.CharField(max_length=200)
def __str__(self):
return self.kitten_type
我的views.py
class CatViews(generic.ListView):
model = Cat
template_name = 'polls/cats.html'
class CatDetail(generic.DetailView):
model = Kitten
template_name = 'polls/kitten.html'
我的urls.py
urlpatterns = [
path('cats/', views.CatViews.as_view(), name='catlist'),
path('cats/<int:pk>/', views.CatDetail.as_view(), name='catdetail'),
]
最后是polls / kitten.html
<h3>{{cat.cat_name}}</h3>
{% for kitty in cat.kittens.all %}
<p>{{ kitty.kitten_type }}</p>
{% endfor %}
URL正在工作,我只是无法将模型中的字段显示到各自的html元素中。我想念什么?
答案 0 :(得分:1)
弄清楚了。我必须将CatDetailView设置为Cat模型,而不是小猫模型。
最终代码:
class CatDetail(generic.DetailView):
model = Cat
template_name = 'polls/kitten.html'
答案 1 :(得分:0)
class CatViews(generic.ListView):
model = Cat
template_name = 'polls/cats.html'
context_object_name='cat'
您的polls / cats.html就像
<h3>{{cat.cat_name}}</h3>
{% for kitty in cat.kittens.all %}
<p>{{ kitty.kitten_type }}</p>
{% endfor %}
答案 2 :(得分:0)
views.py
更改以下内容
class CatViews(generic.ListView):
model = Cat
context_object_name = 'cat'
template_name = 'polls/cats.html'
更改您的polls/kitten.html
<h3>{{cat.cat_name}}</h3>
{% for kitty in cat.kittens.all %}
<p>{{ kitty.kitten_type }}</p>
{% endfor %}
编辑
另外,更改您CatDetail
class CatDetail(generic.DetailView):
model = Kitten
context_object_name = 'kittens'
template_name = 'polls/kitten.html'
编辑2
更改您的polls/kitten.html
。
<h3>{{cat.cat_name}}</h3>
{% for kitty in cat.catdetail.all %}
<p>{{ kitty.kitten_type }}</p>
{% endfor %}