Django Multiple Record Insert CreateView(解凍するのに十分な値がありません(予想2、1を取得))

Najeebullah Usmani

レコードの保存中に次のメッセージが表示されます。解凍するのに十分な値がありません(予想2、1を取得)

取得IDを取得し、qoutations(単一または複数)を添付しています。レコードを保存すると、システムからエラーが表示されます。

createview自体からACQIDを選択してもエラーは発生しませんが、listviewからforiegnキーを取得すると、エラーが発生します。

リストビューから外部キーを取得し、作成ビューにそのキーの引用符を挿入しています

テンプレートが必要な場合は、単一のレコードを保存しても、システムが上記のようにエラーを出していることを知らせてください。

views.py

class QoutationAttach(SuccessMessageMixin, CreateView):
template_name = "ePROC/Acquisition/qoutation_add.html"
model = QoutationSelection

form_class=QoutationAdd
success_message = "Record was created successfully"
success_url = reverse_lazy('ePROC:qoutattach-list')

def form_valid(self, form):

    form.instance.AcqID=CreateACQModel.objects.get(self.kwargs['pk'])

    return super(QoutationAttach, self).form_valid(form)
class QoutationAttachListView(ListView):
    template_name = "ePROC/Acquisition/qoutationattach_list.html"
    model = QoutationSelection
    queryset = QoutationSelection.objects.all()

    context_object_name = 'query_results'
    paginate_by = 10

    def get_context_data(self, **kwargs):
        context = super(QoutationAttachListView, self).get_context_data(**kwargs)
        context['range'] = range(context["paginator"].num_pages)
        return context

forms.py

class QoutationAdd(forms.ModelForm):

class Meta:
    model = QoutationSelection
    labels = {
        "Status":"Status",
        "AcqID":"Acquisition ID",
        "QoutID":"Qoutation ID",

        }

    fields=['QoutID','Status']

QoutID=forms.ModelMultipleChoiceField(queryset=QoutationModel.objects.all())

models.py

class CreateACQModel(models.Model):
RequestItem=models.ForeignKey(CreateReqModel,on_delete=None,related_name='CreateReqID')
ACQProcDate=models.DateTimeField(auto_now_add=True)
ACQStatus=models.CharField(default='Procure',max_length=40)

def __str__(self):
    return '%s' %(self.RequestItem)
def get_absolute_url(self):
    return reverse('request-list', kwargs={'pk':self.id})

class QoutationModel(models.Model):
    REF=models.CharField(max_length=40,default='BKB-Q-')
    RequestItem=models.ForeignKey(CreateACQModel,on_delete=None,related_name='CreateRID')
    RequestQuantity=models.PositiveIntegerField(validators=[MinValueValidator(1)])
    VendorID=models.ForeignKey(VendorModel,on_delete=None,related_name='VendorID')
    ccy=models.CharField(choices=ccych,max_length=40)
    amount=models.PositiveIntegerField(validators=[MinValueValidator(1)])
    date=models.DateTimeField(auto_now_add=True)
    status=models.CharField(max_length=40,choices=QouteCH,default='Received')
    descr=models.TextField(null=True, max_length=200)
    qoute=models.FileField(upload_to='documents/',validators=[FileExtensionValidator(['pdf','zip','rar', 'txt', 'jpg', 'gif', 'doc', 'docx', 'xls', 'xlsx'])],blank=True, null=True)
    def __str__(self):
        return '%s %s' %(self.RequestItem,self.REF)
    class Admin:
        pass
    def get_absolute_url(self):
        return reverse('qoutation-list', kwargs={'pk':self.id})
class QoutationSelection(models.Model):
    AcqID=models.ForeignKey(CreateACQModel,on_delete=None)
    QoutID=models.ManyToManyField(QoutationModel)
    Status=models.CharField(max_length=40,default='NotSeleted')
    def __unicode__(self):
        return self.REF
    def __str__(self):
        return '%s %s' %(self.REF)

エラースタック

Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/ePROC/Qoutation/Attach/4/

Django Version: 2.0
Python Version: 3.6.3
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'widget_tweaks',
 'django_filters',
 'django_tables2',
 'rest_framework',
 'crispy_forms',
 'taggit',
 'jquery',
 'chartit',
 'ePROC']
Installed Middleware:
['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.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "C:\Users\NajVM\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\exception.py" in inner
  35.             response = get_response(request)

File "C:\Users\NajVM\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\base.py" in _get_response
  128.                 response = self.process_exception_by_middleware(e, request)

File "C:\Users\NajVM\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\base.py" in _get_response
  126.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Users\NajVM\AppData\Local\Programs\Python\Python36\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
  21.                 return view_func(request, *args, **kwargs)

File "C:\Users\NajVM\AppData\Local\Programs\Python\Python36\lib\site-packages\django\views\generic\base.py" in view
  69.             return self.dispatch(request, *args, **kwargs)

File "C:\Users\NajVM\AppData\Local\Programs\Python\Python36\lib\site-packages\django\views\generic\base.py" in dispatch
  89.         return handler(request, *args, **kwargs)

File "C:\Users\NajVM\AppData\Local\Programs\Python\Python36\lib\site-packages\django\views\generic\edit.py" in post
  172.         return super().post(request, *args, **kwargs)

File "C:\Users\NajVM\AppData\Local\Programs\Python\Python36\lib\site-packages\django\views\generic\edit.py" in post
  142.             return self.form_valid(form)

File "C:\Users\NajVM\BANKERP\ePROC\views.py" in form_valid
  228.         form.instance.AcqID=CreateACQModel.objects.get(self.kwargs['pk'])

File "C:\Users\NajVM\AppData\Local\Programs\Python\Python36\lib\site-packages\django\db\models\manager.py" in manager_method
  82.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "C:\Users\NajVM\AppData\Local\Programs\Python\Python36\lib\site-packages\django\db\models\query.py" in get
  394.         clone = self.filter(*args, **kwargs)

File "C:\Users\NajVM\AppData\Local\Programs\Python\Python36\lib\site-packages\django\db\models\query.py" in filter
  836.         return self._filter_or_exclude(False, *args, **kwargs)

File "C:\Users\NajVM\AppData\Local\Programs\Python\Python36\lib\site-packages\django\db\models\query.py" in _filter_or_exclude
  854.             clone.query.add_q(Q(*args, **kwargs))

File "C:\Users\NajVM\AppData\Local\Programs\Python\Python36\lib\site-packages\django\db\models\sql\query.py" in add_q
  1252.         clause, _ = self._add_q(q_object, self.used_aliases)

File "C:\Users\NajVM\AppData\Local\Programs\Python\Python36\lib\site-packages\django\db\models\sql\query.py" in _add_q
  1276.                     split_subq=split_subq,

File "C:\Users\NajVM\AppData\Local\Programs\Python\Python36\lib\site-packages\django\db\models\sql\query.py" in build_filter
  1149.         arg, value = filter_expr

Exception Type: ValueError at /ePROC/Qoutation/Attach/4/
Exception Value: not enough values to unpack (expected 2, got 1)
Alasdair

オブジェクトをフェッチするときは、主キーをkwargとして使用する必要があります。

form.instance.AcqID=CreateACQModel.objects.get(pk=self.kwargs['pk'])

現時点でDoesNotExistは、データベースにその主キーを持つオブジェクトがない場合、500サーバーエラーにつながる例外が発生します。get_object_or_404代わりにショートカットを使用して404ページを返すことができます

from django.shortcuts import get_object_or_404
form.instance.AcqID=get_object_or_404(CreateACQModel, pk=self.kwargs['pk'])

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ