0

model.Managerストアド プロシージャを実行する と、model.Model返されたデータを処理する があります。ただし、データが返されるとqueryset、タプルのリストとして返されるのではなく、フィールド名で参照することはできません。結果を として返したいと思いquerysetます。

models.py

class DashboardDetailManager(models.Manager):
    def dashboardDetail(self, from_date, to_date):
        from django.db import connections
        # AD 11/10/2020 updated sproc to return multiple sets for easier handling
        # was only returning the last set of expected results-->
        raw_sql = f"EXEC dbo.spGetDashDetailData @formFromDate = '{from_date}', @formToDate = '{to_date}'"
        with connections['ECS3'].cursor() as cursor:
            cursor.execute(raw_sql)
            detail_rows = []
            for row in cursor.fetchall():
                detail_rows.append(row)
            while cursor.nextset():
                for row in cursor.fetchall():
                    detail_rows.append(row)

        return detail_rows



class DashDetailData(models.Model):
    occurred = models.DateField(blank=True, null=True);
    severity = models.CharField(max_length=3, blank=True, null=True)
    batchid = models.CharField(max_length=255, blank=True, null=True);
    hrefkey = models.CharField(max_length=255, blank=True, null=True)
    email = models.EmailField(null=True, blank=True)
    id_cst = models.IntegerField(null=True, blank=True)
    docType =  models.CharField(max_length=255, blank=True, null=True);
    tpid =  models.CharField(max_length=255, blank=True, null=True);
    name_cst =  models.CharField(max_length=255, blank=True, null=True);
    message =  models.CharField(max_length=255, blank=True, null=True);
    attachment =  models.CharField(max_length=255, blank=True, null=True);
    bom_status =  models.CharField(max_length=255, blank=True, null=True);
    ack =  models.CharField(max_length=255, blank=True, null=True);
    bom_count = models.IntegerField(null=True, blank=True)
    objects = DashboardDetailManager()

ビュー.py

detail_rows = DashDetailData.objects.dashboardDetail('11-10-2020', '11-20-2020')

4

0 に答える 0