как обработать запрос Post с отношением ко многим в django - PullRequest
0 голосов
/ 08 марта 2020

У меня есть 3 модели, и я хочу сохранить их, они имеют отношение между ними, вы можете изменить что-либо, и у меня есть еще одна проблема, связанная с использованием функции js клон функции, чтобы добавить столько элементов, сколько я хочу в форме шаблона

class Item (models.Model):
    name = models.CharField(("Item"), max_length=50)
    description = models.TextField(("Description"),blank=True, null=True)
    category_id = models.ForeignKey(ItemCategory, on_delete=models.CASCADE,blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name


class RFQ (models.Model):

    title = models.CharField(("Title"), max_length=100)
    # qty  = models.CharField(("Quantity"), max_length=50)
    project  = models.ForeignKey(Project,  on_delete=models.CASCADE)
    item = models.ManyToManyField(Item, through='RFQItem')
    note = models.TextField(("Note"),blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    def __str__(self):
        return self.name

class RFQItem (models.Model):
    RFQ = models.ForeignKey(RFQ, on_delete=models.CASCADE)
    item = models.ForeignKey(Item, on_delete=models.CASCADE)
    price =models.FloatField(("Price"), blank=True)
    qty = models.FloatField(("Quatity"), blank=True)

примечание Я использую HTML и bootstrap в шаблоне, а не Django форму, как я могу обработать это в представлении и сохранить его

Я пытаюсь что-то подобное, но выдает ошибку и не может сохранить это

Это мой код просмотра

def create_RFQ(request, project_id):
    context = {}
    print('aaaaaaaaaaa')
    if request.method == 'POST':

        print(request.POST)
        print(project_id)
    if not request.user.is_authenticated:
        return redirect("login")
    items = Item.objects.all() 
    # context = {}
    if request.method == 'POST':
        print('*-*-*-*-')
        form1 = RFQCreate(request.POST)
        form2 = ItemCreate(request.POST)
        form3 = RFQItemCreate(request.POST)
        form1.title = request.POST['title']
        form1.project = Project.objects.get(pk=project_id)
        print('form1')
        print(form1.fields)
        form1.project = project_id
        form2.name = request.POST['title']
        if form1.is_valid():
            print('form1 valid')
        if form2.is_valid():
            print('form2 valid')
        if form3.is_valid():
            print('form3 valid')
        if form1.is_valid() and form2.is_valid() and form3.is_valid():
            a = form1.save()
            b = form2.save()
            c = form3.save(commit=False)
            c.rfq = a
            c.item = b
            c.save()
            # print(form1.cleaned_data['title'])
            print('form2')
            print(form2)
            print('form3')
            print(form3)
        else:
            print('*************')
            messages.error(request, f'check error')

    else:
        form1 = RFQCreate()
        form2 = ItemCreate()
        form3 = RFQItemCreate()
    context['create_rfq'] = form1
    context['create_item'] = form2
    context['create_rfqitem'] = form3
    return render(request, 'RFQs/create_RFQ.html', context)
...