【问题标题】:Django: the detail page is not showing(template error)Django:详细页面未显示(模板错误)
【发布时间】:2020-04-30 11:18:29
【问题描述】:

我正在处理一个 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"),

【问题讨论】:

  • 在您的列表视图模板中更改为&lt;a href="{% url 'offerdetail' pk=my.id %}"&gt;{{my.sender_name}}&lt;/a&gt;
  • 它正在工作,但我还需要价格模型的详细信息....它没有继承

标签: python django


【解决方案1】:

从cmets开始,

在你的 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

【讨论】:

  • 感谢您的帮助先生,但价格模型没有继承
  • @dilmeetpadda,你能把这个{{ offernew.price_model }} 放到你的模板里看看你得到了什么吗,
  • 对不起,我的错误,你可以试试这个:&lt;p&gt;{{offernew.sender_name}}&lt;/p&gt; &lt;p&gt;{{offernew.receiver_name}}&lt;/p&gt; {% for x in offernew.price_model %} &lt;p&gt;{{x.driver_name}}&lt;/p&gt; {% endfor %}
  • 先生什么都没发生
  • 请分享你从中得到的东西。 {{ offernew.price_model }}
猜你喜欢
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 2020-12-06
  • 2018-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
相关资源
最近更新 更多