Товар не повторяется по моделям - PullRequest
1 голос
/ 11 мая 2019

Я хочу показать все мои объекты, которые есть в моих моделях, на странице, которую я создал

весь код указан ниже, Спасибо models.py ---- >>

 from django.db import models

 from django.utils import timezone

 class Product(models.Model):
     title      = models.CharField(max_length = 250)
     description = models.TextField(blank = False)
     price      = models.IntegerField()
     datecreated = models.TimeField()
     featured   = models.BooleanField(default = False)



     def __str__(self):
        return self.title


     def get_Absolute_url(self):
        return reverse("products", kwargs = {"id":self.id})

views.py ---- >>

def home(request):
             obj = Product.objects.get()
             context = {
                     "obj":obj
                        }
             return render(request, "firstapp/home.html", context)

Шаблоны ---- >>

<h1>Products in database</h1>
            {% for x in obj %}
                <p>{{x.title}}</p>
            {% endfor %}

получение объектов модели ошибок не повторяется

Ответы [ 3 ]

2 голосов
/ 11 мая 2019

Вы должны использовать .all(), чтобы получить все объекты из модели.Попробуйте это:

obj = Product.objects.all()
1 голос
/ 11 мая 2019

Вы здесь пишете:

obj = Product.objects.<b>get()</b>

Это означает, что вы выбираете один Product объект. Этот вызов будет только успешным, если таблица Product содержит ровно одну запись, и в результате obj будет Product, не набором Product с .

Если вы не внедрили функцию __iter__ на вашем Product (строго говоря, вы можете сделать это, но это может быть не очень хорошей идеей), вы, таким образом, можете не перебирает один Product объект и, следовательно, программа завершается ошибкой. Тем не менее, вы можете получить QuerySet из Product s и выполнить итерацию по этому QuerySet.

Вы, вероятно, хотите получить все Product с:

def home(request):
    obj = Product.objects<b>.all()</b>
    context = { 'obj': obj }
    return render(request, 'firstapp/home.html', context)

Если вы хотите получить один Product, ваш путь, вероятно, должен содержать первичный ключ, слаг или другой способ идентификации продукта.

0 голосов
/ 11 мая 2019

Если вам нужно отфильтровать объекты, вы можете использовать .filter (), чтобы получить фильтр объектов из модели. obj = Product.objects.filter ()

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