'status' - недопустимый аргумент ключевого слова для этой функции - PullRequest
0 голосов
/ 30 января 2019

Я новичок в Django & Python.(Ранее был PHP).У меня возникла проблема, когда я хочу архивировать пользовательскую модель без ослепления БД.Данные для модели получены из необработанного SQL.

Я пытаюсь выяснить, как получить данные из rawsql, а затем вставить в объект.Я нашел эту статью Model Manager , которая выглядит многообещающе.

После попытки и ошибки.Я получаю сообщение об ошибке ниже:

Среда:

Метод запроса: GET URL запроса: http://127.0.0.1:8000/a/something

Версия Django: 2.1.5 Версия Python: 3.7.2 Установленные приложения: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles ',' rest_framework ',' rest_framework.authtoken ',' phonenumber_field ',' user_accounts ',' shipments ',' CA ',' rest_auth ',' rest_auth.registration ',' allauth ',' allauth.account ','django.contrib.sites ',' allauth.socialaccount ',' dashboard '] Установленное промежуточное ПО: [' django.middleware.security.SecurityMiddleware ',' django.contrib.sessions.middleware.SessionMiddleware ',' django.middleware.common.CommonMiddleware »,« django.middleware.csrf.CsrfViewMiddleware »,« django.contrib.auth.middleware.AuthenticationMiddleware »,« django.contrib.messages.middleware.MessageMiddleware »,« django.midackOX »

Traceback:

Файл "C: \ Users \ myfxhuta \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ core \ handlers \ exception.py" во внутреннем 34. response = get_response (запрос)

Файл "C: \ Users \ myfxhuta \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ core \ handlers \ base.py" в _get_response 126. ответ= self.process_exception_by_middleware (e, запрос)

Файл "C: \ Users \ myfxhuta \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ core \ handlers \ base.py "in _get_response 124. response = wrapped_callback (запрос, * callback_args, ** callback_kwargs)

Файл" C: \ Users \ myfxhuta \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ views \ decorators \ csrf.py "в wrapped_view 54. return view_func (* args, ** kwargs)

Файл" C: \ Users \ myfxhuta \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ views \ generic \ base.py "в представлении 68. вернуть self.dispatch (запрос, * аргументы, ** kwargs)

файл" C: \ Users \ "мойfxhuta \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ rest_framework \ views.py "в отправке 495. response = self.handle_exception (exc)

Файл" C: \ Users "\ myfxhuta \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ rest_framework \ views.py "в handle_exception 455. self.raise_uncaught_exception (exc)

Файл" C: \ Users \myfxhuta \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ rest_framework \ views.py "в отправке 492. response = обработчик (запрос, * args, ** kwargs)

файл"C: \ Users \ myfxhuta \ Documents \ Coding \ python-testing \ CA \ dashboard \ views.py" в get 23. "data": consignment_status.objects.with_counts ()

Файл "C: \Пользователи \ myfxhuta \ Documents \ Coding \ python-testing \ CA \ dashboard \ models.py "в with_counts 22. p = self.model (consignmentNo = row [0], status = row 1 , creation_time =строка [2])

Файл "C: \ Users \ myfxhuta \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ models \ base.py" в init 485. Повышение TypeError («% s» является недопустимым аргументом ключевого слова для этой функции »% kwarg)

Тип исключения: TypeError at / a / кое-что Значение исключения:« status »является недопустимым аргументом ключевого слова для этогофункция

Это мой models.py

from django.db import models


class list_consignment(models.Manager):


def with_counts(self):
    import pyodbc
    cnxn = pyodbc.connect('Driver={SQL Server};Server=127.0.0.1;Database=TEST;uid=USERID;pwd=PASSWORD;')
    cursor = cnxn.cursor() 

    with cnxn.cursor()  as cursor:

        cursor.execute("""select t.ConsignmentNo, case when t2.TaskId = '50' then t2.TaskName when t2.TaskId IS NULL then 'NEW' else 'PENDING' end as 'status', case when t2.TaskId IS NOT NULL then t2.ActEnd else t.CreateDate end as created_time from ( select ConsignmentNo,JobEntry.CreateDate,JobEntry.JobStatus, max(ActEnd) as lastes_time from JobEntry left join jobTracking on JobEntry.JobNo = jobTracking.JobNo and JobEntry.companyid=jobTracking.companyid where JobEntry.companyid = 40 and JobEntry.CustomerCode = 'A000177' and ConsignmentNo like '%' and CAST(JobEntry.CreateDate as date) >= CAST(getdate()-1 as date) and JobEntry.iscancel = 0 group by ConsignmentNo, JobEntry.CreateDate,JobEntry.JobStatus ) t left Join ( select ConsignmentNo,JobEntry.CreateDate as jcreate_date, jobTracking.* from JobEntry left join jobTracking on JobEntry.JobNo = jobTracking.JobNo and JobEntry.companyid=jobTracking.companyid where JobEntry.companyid = 40 and JobEntry.BranchId = 40 and CAST(JobEntry.CreateDate as date) >= CAST(getdate()-1 as date) and JobEntry.CustomerCode = 'A000177' and ConsignmentNo like '%' )t2 on t.ConsignmentNo = t2.ConsignmentNo and t.lastes_time = t2.ActEnd and t.CreateDate = t2.jcreate_date order by status, ConsignmentNo""")
        result_list = []
        for row in cursor.fetchall():
            p = self.model(consignmentNo=row[0], status=row[1], created_time=row[2])

            result_list.append(p)
    return result_list

class consignment_status(models.Model):
    consignmentNo = models.CharField(max_length=100)
    status = models.TextField
    created_time = models.DateField()
    objects = list_consignment()
    class Meta:
            managed = False

Это мой view.py

class dashboard(APIView):
    permission_classes=(AllowAny,) 
    def get(APIView, request):

        data = [{
            "data" : consignment_status.objects.with_counts()
        }]

        return HttpResponse(data)

Пожалуйста, предоставьте руководство, что следуетэто ошибка?

1 Ответ

0 голосов
/ 30 января 2019

При изменении класса consignment_status,

status = models.TextField

на

status = models.TextField(max_length=100)
...