Django多个查询集并迭代模板

时间:2015-06-18 11:03:58

标签: python django

我有两种模式:

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_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循环模板中迭代两个查询集不起作用

1 个答案:

答案 0 :(得分:0)

这是一个非常非常基本的问题,您几乎可以直接从文档中的示例中提取;请花时间阅读它们。这就是为什么你的问题被低估了。

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

查看:

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>

但是,customer上的Enquiry字段指向User,而不是Customer,因此您需要解决此问题。如果你还没有,你真的应该通过Django tutorial