Передача внешнего ключа через сеанс Django - PullRequest
0 голосов
/ 21 июня 2020

Я действительно застрял в сценарии, когда я хочу передать некоторые данные через сеанс в django из одного представления в другое. Я хочу передать данные из набора форм Dynami c (т. Е. Он может иметь одну форму, две формы или более - никакого способа узнать). В этом единственном поле - ProductCode - является внешний ключ, поэтому json не может быть сериализован. Я отправлю свой код ниже:

models.py

class QuoteManifest(models.Model):
    quote = models.ForeignKey(Quote, null=True, on_delete=models.CASCADE)
    ProductCode = models.ForeignKey(Product, null=True)
    DescriptionOfGoods = models.CharField(max_length=500, blank=True)
    UnitQty = models.CharField(max_length=10, blank=True)
    Type = models.CharField(max_length=50, blank=True)
    Amount = models.CharField(max_length=100, blank=True)
    Price = models.CharField(max_length=100, blank=True)


class Product(models.Model):
    ProductCode = models.CharField(max_length=100)
    HSCode = models.CharField(max_length=50, null=True)
    DescriptionOfGoods = models.CharField(max_length=100)
    Price = models.CharField(max_length=100)
    UnitType = models.CharField(max_length=100)

    def __str__(self):
        return str(self.ProductCode)

views.py

def QuoteView(request):
    QuoteManifestForm= modelformset_factory(QuoteManifest, QManifestForm, can_delete = True)
    if request.method == "POST":
        form2 = QuoteManifestForm(request.POST)
        if form.is_valid():   
                manifestData = form2.cleaned_data     
                product = manifestData.pop('ProductCode') #this is where I get error
                request.session['manifestData'] = manifestData

                return redirect('QuotePreview')


class QuotePreview(View):
    def get(self, request, *args, **kwargs):

        manifestData = request.session.pop('manifestData', {})

        context = {
            'manifestData': manifestData,
        }

        pdf = render_to_pdf('quote_preview.html', context)
        return HttpResponse(pdf, content_type='application/pdf')

forms.py

class QManifestForm(forms.ModelForm):
    class Meta:
        model = QuoteManifest
        fields =('ProductCode', 'DescriptionOfGoods', 'UnitQty', 'Type','Amount', 'Price')

Когда Пробую это - появляется сообщение об ошибке ProductCode is not JSON serializable. Итак, во-первых, как я могу сделать это таким. Во-вторых, как я могу это сделать, предполагая, что в manifestData будет больше 1 ProductCode?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...