шаблон не отображающий информацию - django - PullRequest
3 голосов
/ 20 апреля 2020

Я не могу понять, почему мои данные не отображаются в моем шаблоне пользователя. html. Из рассмотрения кода похоже, что все связано правильно. Страница пользователей. html отображается на сайте за вычетом информации о {{user.order_set.all}}. Я выделил код, который, я считаю, относится к этой проблеме. Любое руководство будет с благодарностью, спасибо!

пользователь. html - html за отображение данных

{% extends "fuisce/base.html" %}

{% block content %}

**{{ user.order_set.all }}**


{% endblock content %}

views.py - заказ

from django.shortcuts import render, HttpResponseRedirect
from django.urls import reverse

# Create your views here.

from carts.models import Cart

from .models import Order
from users.models import Profile 

from .utils import id_generator

**def orders(request):
    context = {}
    template = "orders/user.html"
    return render(request, template, context)**

def checkout(request):
    try:
        the_id = request.session['cart_id']
        cart = Cart.objects.get(id=the_id)
    except:
        the_id = None
        return HttpResponseRedirect(reverse("cart"))

    new_order, created = Order.objects.get_or_create(cart=cart)
    if created:
        new_order.order_id = id_generator()
        new_order.save()
    my_p = Profile.objects.get(user=request.user)
    new_order.user = my_p
    new_order.save()

    if new_order.status == "Finished":
        # cart.delete()
        del request.session['cart_id']
        del request.session['items_total']
        return HttpResponseRedirect(reverse("cart"))


    context = {}
    template = "fuisce/about.html"
    return render(request, template, context)

models.py - заказы

from django.db import models

# Create your models here.
from carts.models import Cart

from users.models import Profile

STATUS_CHOICES =(
        ("Started", "Started"),
        ("Abandoned", "Abandoned"),
        ("Finished", "Finished"),
    )

class Order(models.Model):
    **user = models.ForeignKey('users.Profile', null=True, blank=True, on_delete=models.CASCADE)**
    order_id = models.CharField(max_length=120, default='ABC', unique=True)
    cart = models.ForeignKey('carts.Cart', on_delete=models.CASCADE)
    status = models.CharField(max_length=120, choices=STATUS_CHOICES, default="Started")
    sub_total = models.DecimalField(default=10.99, max_digits=1000, decimal_places=2)
    tax_total = models.DecimalField(default=10.99, max_digits=1000, decimal_places=2)
    final_total = models.DecimalField(default=10.99, max_digits=1000, decimal_places=2)
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)

    def __string__(self):
        return self.order_id

urls.py

from django.urls import path
from . import views
from carts import views as cart_views
from orders import views as order_views

urlpatterns = [
    path('', views.home, name='fuisce-home'),
    path('subscription/', views.subscription, name='fuisce-subscription'),
    path('oneoff/', views.oneoff, name='fuisce-oneoff'),
    path('about/', views.about, name='fuisce-about'),
    path('contact/', views.contact, name='fuisce-contact'),
    path('cart/', cart_views.view, name='cart'),
    path('cart/<int:id>/', cart_views.remove_from_cart, name='remove_from_cart'),
    path('cart/<slug>/', cart_views.add_to_cart, name='add_to_cart'),
    path('checkout/', order_views.checkout, name='checkout'),
    **path('orders/', order_views.orders, name='user_orders'),**

]

1 Ответ

1 голос
/ 20 апреля 2020

Судя по комментариям к вопросу, кажется, у вас есть поле ForeignKey на Profile, а не на User.

Либо измените ForeignKey с Profile на User вот так:

class Order(models.Model):
    user = models.ForeignKey(
        'auth.User',
        on_delete=models.CASCADE,
        null=True,
        blank=True)

Или используйте другой поиск в вашем шаблоне:

{{ user.profile.order_set.all }}
...