Django: страница сведений не отображается (ошибка шаблона) - PullRequest
1 голос
/ 30 апреля 2020

Я работаю над проектом 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 post

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 страница представления списка ... когда кто-то нажимает на него, он показывает детали следующего отправить предложение. html

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

и когда кто-то нажимает на его маршрут к странице подробностей ... но он показывает, что шаблон не существует, это моя страница подробностей ie. 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 голосов
/ 30 апреля 2020

Исходя из комментариев,

В вашем ListView,

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

здесь, указанный URL не определен в вашем urls.py, поэтому он не показывает 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 Документы для DetailView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...