Django:详细信息页面未显示(模板错误)

时间:2020-04-30 11:18:29

标签: python django

am在Django项目上工作,其中显示了职位和金额的详细信息 这是我发布的models.py

class Loader_post(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE ,related_name="Loader")
    pick_up_station = models.CharField(max_length=150)
    destination_station = models.CharField(max_length=150)
    sender_name = models.CharField(max_length=150)
    phone_number = PhoneNumberField(null=False, blank=False, unique=True)
    receiver_name = models.CharField(max_length=150)


def __str__(self):
    return self.user.username

def get_absolute_url(self):
    return reverse("Loader:my_job", kwargs={"pk": self.pk})

这是我继承Loader帖子的第二个模型

class price(models.Model):
    my_post = models.ForeignKey(Loader_post, related_name='prices',on_delete=models.CASCADE, 
     null=True, default='')
    user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE,  null=True, default='')
    driver_price = models.CharField(max_length=150, null=True)
    driver_name = models.CharField(max_length=150, null=True)
    approved_price = models.BooleanField(default=False)
    status = models.BooleanField(default=False)

def get_absolute_url(self):
    return reverse("Driver:Driverview")

def __str__(self):
    return self.driver_price

这是列表视图和详细信息视图的view.py

class offer_view(ListView, SelectRelatedMixin):
    context_object_name = 'offern'
    model = Loader_post
    template_name = "offer.html"

def get_queryset(self):
    qs = Loader_post.objects.filter(user=self.request.user)
    return qs


class offer_view_detail(DetailView):
    context_object_name = 'offernew'
    model = Loader_post
    template_name = "offer_detail.html"

这是我的列表视图的HTML页面...当有人单击它时,它显示下一篇文章的详细信息 offer.html

{% for my in offern %}
<a href="{{my.id}}/">{{my.sender_name}}</a> {% endfor %}

,并且当有人单击其到详细信息页面的路线时..但它显示模板不存在 这是我的详细信息页面,即。 offer_details.hml

<p>{{offernew.sender_name}}</p>
<p>{{offernew.receiver_name}}</p>
 {% for x in offernew.prices.all %}
<p>
<p>{{x.driver_name}}</p>
</p>

这是urls.py

path('offerdetail/<int:pk>', views.offer_view_detail.as_view(),name="offerdetail"),
path('offer/', views.offer_view.as_view(), name="offer"),

1 个答案:

答案 0 :(得分:0)

在评论之后,

在您的ListView中,

<a href="{{my.id}}/">{{my.sender_name}}</a>

在这里,您的urls.py中未定义指定的url,这就是为什么它没有显示template doesn't exist的原因,更改为此即可解决此问题。

<a href="{% url 'offerdetail' pk=my.id %}">{{my.sender_name}}</a>

现在,要在您的DetailView中显示价格模型,我会做类似的事情。

class offer_view_detail(DetailView):
   context_object_name='offernew'
   model = Loader_post
   template_name = "offer_detail.html"

   def get_context_data(self, **kwargs):
       context = super().get_context_data(**kwargs)
       context['price_model'] = self.object.prices.all()
       return context

并在您的模板中

<p>{{offernew.sender_name}}</p>
<p>{{offernew.receiver_name}}</p>
    {% for x in offernew.price_model %}
        <p>{{x.driver_name}}</p>
    {% endfor %}

Django Docs for DetailView