查询不返回值

时间:2015-03-26 22:12:59

标签: python django django-templates

所以我想我正在做的事情是相当普遍的。我正在尝试使用Django显示结果集。我在网上看了一段时间,这就是我想出的:

models.py{
from django.db import models
from django.conf import settings

class SalesRep(models.Model):
  user = models.OneToOneField(settings.AUTH_USER_MODEL)

class Sales(models.Model):
  seller = models.ForeignKey(SalesRep)  
  sold_on = models.DateField("Sold On")
}

sales_view.py{
from salesteam.models import SalesRep, Sales
from django.views.generic import ListView

class SellerHome(List View):
  model = SalesRep
  template_name = 'production/sales.html'

  @property
  def rep_sales(self):
    return Sales.objects.filter(SalesRep=self)
}

sales.html{
<div id="total-sales">
  {% for sale in SellerHome.rep_sales%}
    <li>{{ sale.id }}</li>
  {% empty %}
    <li>You don't currently have any sales</li>
  {% endfor %}
</div>
}

为了完整起见,我甚至尝试将该财产写为Sales.objects.all(),但仍然没有运气。谢谢你看一下,因为我对HTML,Django和Python都很陌生。对我所做错的任何帮助都会非常感激。如果您有任何问题,请告诉我们。)

2 个答案:

答案 0 :(得分:0)

首先,我建议避免基于类的视图,至少在你学习Django的时候,因为它们对你正在做的事情并不是真的有必要和不必要的复杂。

无论如何,要使用基于类的视图回答您的问题,您的问题就在您的模板和视图中。您希望将rep_sales逻辑放在get_queryset中,将模型设置为Sales,而不是SalesRep,然后在模板中引用object_listMore info

但是,我建议编写一个基于函数的普通Django视图。这样的事情可能会让你开始:

def view_all_sales(request):
    my_sales_rep = SalesRep.objects.get(request.user)
    all_my_sales = Sales.objects.filter(seller=my_sales_rep)

    return render(request, "production/sales.html", {
        "sales": all_my_sales
    })

答案 1 :(得分:0)

我不确定您遵循了哪些教程,但代码中存在很多错误...我假设您要显示所有Sales登录用户?

在这种情况下,我会稍微更改模型,向related_name添加SalesSalesRep外键:

class SalesRep(models.Model):
  user = models.OneToOneField(settings.AUTH_USER_MODEL)

class Sales(models.Model):
  seller = models.ForeignKey(SalesRep, related_name='sales')  
  sold_on = models.DateField('Sold On')

文档:https://docs.djangoproject.com/en/1.7/ref/models/fields/#django.db.models.ForeignKey.related_name

我会将views更改为使用DetailView

from django.views.generic import DetailView

class SellerDetailView(DetailView):
    model = SalesRep
    template_name = 'production/sales.html'
    context_object_name = 'seller'

    def get_object(self):
        return self.request.user

详情视图上的文档 - https://docs.djangoproject.com/en/1.7/ref/class-based-views/generic-display/#detailview

<div id="total-sales">
    <ul>
    {% for sale in seller.sales.all %}
        <li>{{ sale.id }}</li>
        {% empty %}
        <li>You don't currently have any sales</li>
    {% endfor %}
    </ul>
</div>