我到一个PHP到Django的迁移项目,在这里我不能改变我的数据库的模式连接表的字段
有在多个连接在那里为字段,而FK的地方,我有现在没有权利添加它们。即使在我的Django模型中,也是因为数据库的大小和项目交付的时间限制。
我正在使用Django-rest-framework并重写列表方法和queryset来接受这些原始的sqls。
sql = """SELECT
a.field1,
b.field2
FROM a
LEFT JOIN b ON a.fieldx = b.fieldy"""
的问题是,因为我说的模型= models.A而这种模式没有关于模型B.信息,我不能在我的序列化器类添加字段元组 内部连接表的字段
您的帮助,将不胜感激。
谢谢!
UPDATE 我只使用viewset。我没有使用任何观点(这是错的?) 我的视图集中
class AdminclassinfoViewSet(viewsets.ModelViewSet):
queryset = models.Classroominfo.objects.all()
serializer_class = ClassroominfoSerializer
def list(self, request):
sql = """
SELECT -- DISTINCT
cri.classroomid,
cri.assessmentid,
cri.resourceid,
al.assessmenttype,
al.assessmenttitle,
ri.resourcetype,
ri.resourcetitle,
wwi.writtenworktitle,
cri.writtenworkid,
si.firstname,
si.imageurl,
date(cri.posteddate) as posteddate,
cri.studentid
FROM classroominfo cri
LEFT OUTER JOIN assignassessmentinfo aai ON aai.assessmentid = cri.assessmentid
AND aai.studentid = cri.studentid
LEFT OUTER JOIN assessmentlist al ON al.assessmentid = cri.assessmentid
LEFT OUTER JOIN assignresourceinfo ari ON ari.resourceid = cri.resourceid
AND ari.studentid = cri.studentid
LEFT OUTER JOIN resourceinfo ri ON ri.resourceid = cri.resourceid
LEFT OUTER JOIN assignwrittenworkinfo awwi ON awwi.writtenworkid = cri.writtenworkid
LEFT OUTER JOIN writtenworkinfo wwi ON wwi.writtenworkid = cri.writtenworkid
LEFT OUTER JOIN logininfo li ON li.loginid = cri.studentid
LEFT OUTER JOIN studentinfo si ON si.username = li.username
WHERE (ari.isclassroom =1 OR
aai.isclassroom =1 OR
awwi.isclassroom=1)
ORDER BY cri.classroomid DESC
"""
queryset = models.Classroominfo.objects.raw(sql)
serializer_class = ClassroominfoSerializer
serializer = ClassroominfoSerializer(queryset, many=True)
return Response(serializer.data)
我的串行。我不知道如何在这里提及联接字段...
class ClassroominfoSerializer(serializers.ModelSerializer):
class Meta:
model = models.Classroominfo
fields = ('classroomid', 'assessmentid','resourceid',
'writtenworkid')
你可以包括你目前的序列化和视图?甚至可能是模型取决于他们有多相关? – 2014-11-22 15:49:47
@Kevin更新了我的问题 – Jega 2014-11-22 18:33:15