我的下面是models.py:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class IndustryCat1(models.Model):
name = models.CharField(max_length=256)
class Meta:
managed = False
db_table = 'industry_cat_1'
class IndustryCat2(models.Model):
name = models.CharField(max_length=256)
num = models.CharField(max_length=10)
label = models.CharField(max_length=200)
industry_cat_1_id = models.ForeignKey('IndustryCat1')
class Meta:
managed = False
db_table = 'industry_cat_2'
class IndustryCat3(models.Model):
name = models.CharField(max_length=256)
num = models.CharField(max_length=10)
label = models.CharField(max_length=200)
industry_cat_2_id = models.ForeignKey('IndustryCat2', blank=True, null=True, related_name='industry_cat_2_id')
class Meta:
managed = False
db_table = 'Industry_cat_3'
class IndustryCat4(models.Model):
name = models.CharField(max_length=256)
num = models.CharField(max_length=10)
label = models.CharField(max_length=200)
industry_cat_3_id = models.ForeignKey('IndustryCat3', blank=True, null=True, related_name='industry_cat_3_id')
class Meta:
managed = False
db_table = 'Industry_cat_4'
这是我编写查询的文件: industries.py:
from demo.models import IndustryCat1, IndustryCat2
import datetime
from django.db.models import Q
class Industries:
@staticmethod
def getIndustries(indId):
try:
b = IndustryCat1.objects.filter()
return b.industrycat2_set.all() # Returns all Entry objects related to Blog.
except IndustryCat1.DoesNotExist:
return None
这是我需要获取查询返回结果的文件,该结果在industries.py中实现: views.py:
# -*- coding: utf-8 -*-
from django.http import HttpResponse
from models import IndustryCat1
from demo.core.persistence.Industries import *
from django.shortcuts import get_object_or_404, render, render_to_response
from django.core import serializers
import json
def index(request):
industry = Industries()
qs = industry.getIndustries(1)
return HttpResponse(serializers.serialize("json", qs))
context = {'indus': indus}
return render(request, 'demo/test/industries_catagories.html', context)
我的表格结构如下:
IndustryCat1的结果有两列id和name。
IndustryCat2将industryCat1 id作为foreignKey。
我想获取所有的IndustryCat1记录及其相应的industryCat2
我试图在industries.py中使用以下查询:
b = IndustryCat1.objects.filter()
return b.industryCat2_set.all()
但我得到以下错误:
/ demo /中的AttributeError'QuerySet'对象没有属性 'industryCat2_set'
任何有关如何应用此类查询的帮助都会对我有所帮助。
先谢谢。
答案 0 :(得分:0)
默认相关名称应全部为小写。
...
b.industrycat2_set.all() # correct syntax but incorrect usage
OTOH,您有一个查询集而不是单个对象。您不能仅从查询集中filter
返回的每个对象直接从查询集访问反向外键关系。
最后,请注意,不要将_id
添加到外键的字段名称中。当您确实需要访问外键字段的id
时,它会变得一团糟。