【问题标题】:Django multiple queryset and iterate over templateDjango 多个查询集并遍历模板
【发布时间】:2015-09-03 23:43:34
【问题描述】:

我有两个模型:

class Customer(models.Model):
    user = models.ForeignKey(User)
    region_id = models.IntegerField(blank=True, null=True)
    company_name = models.CharField(max_length=45, blank=True)

class Enquiry(models.Model):
    customer = models.ForeignKey(User)
    region_id = models.IntegerField(blank=True, null=True)
    status = models.CharField(max_length=45, null=False, blank=False)
    date_of_enquiry = models.DateField(auto_now_add=True)

模板应该看起来像

enquiry_id  Company_name  region_id  date_of_enquiry
1               xyz           abc          12/2/2015    
2               mno           pqr          12/2/2015

两个模型都由 customer_id 引用

很抱歉给您带来不便,

让我在这里消除疑问

我从查询表中查询,过滤器为 region_id,状态如下(将登录用户 region_id 与查询表 region_id 和查询表状态匹配) received_object= Enquiry.objects.filter(region_id=user_obj.region_id, status="Enquiry Sent")

我得到这样的输出

enquiry_id    region_id  date_of_enquiry
1               abc          12/2/2015    
2               pqr          12/2/2015

但我想在表格中也显示公司名称

所以我把查询写成

userAdded_Object = []

对于 received_object 中的项目: userAdded_object.append(Customer.objects.get(user_id=item.customer_id))

并且在模板上的单个 for 循环中迭代两个查询集不起作用

【问题讨论】:

  • 然后?究竟是什么问题?

标签: python django


【解决方案1】:

这是一个非常非常基本的问题,您几乎可以直接从文档中的示例中提取;请花时间阅读它们。这就是您的问题被否决的原因。

需要代码帮助的问题至少应提供您尝试过但不起作用的代码。要求人们为您编写代码是不受欢迎的,但今天早上我感觉很慷慨,所以:

查看:

def your_view(request):
    enquiries = Enquiry.objects.select_related('customer').all()
    return render(request, 'your-template.html', {'enquiries': enquiries})

表:

<table>
    {% for enquiry in enquiries %}
    <tr>
        <td>{{ enquiry.id }}</td>
        <td>{{ enquiry.customer.company_name }}</td>
        <td>{{ enquiry.region }}</td>
        <td>{{ enquiry.date_of_enquiry }}</td>
    </tr>
    {% empty %}
    <tr>
        <td>Sorry, no enquiries.</td>
    </tr>
    {% endfor %}
</table>

但是,Enquiry 上的 customer 字段指向 User,而不是 Customer,因此您需要修复它。如果你还没有,你真的应该通过Django tutorial 工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多