ValueError无法分配“ <QuerySet” ReplyItemPrice.item”必须是“ RequestForQuotationItem”实例

时间:2020-04-24 23:45:10

标签: python django

  • 也欢迎您提供有关如何设计回复模型的任何建议。
  • 甚至是如何更好地构建视图
  • 通过表单集在一个父项下创建项目

要归档的内容

  • 单价,item_total_price与单个商品关联

  • delivery_charges,total_total,subtotal与所有项目模型相关联,

class RfqFullPrice(models.Model):
    sender = models.name = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="quote_sender")`
    receiver = models.name = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="quote_reciever")
    requestedquotation = models.ForeignKey(RequestForQuotation, related_name="replyprice_rfq", on_delete=models.CASCADE) 
    subtotal = MoneyField(max_digits=14, decimal_places=2, default_currency='USD', validators=[MinMoneyValidator(0)])
    delivery_charges = MoneyField(max_digits=14, decimal_places=2, default_currency='USD', validators=[MinMoneyValidator(0)])
    overall_total = MoneyField(max_digits=14, decimal_places=2, default_currency='USD', validators=[MinMoneyValidator(0)])
    validity_start_date = models.DateField()
    validity_end_date = models.DateField()

 class ReplyItemPrice(models.Model):
    full_price = models.ForeignKey(RfqFullPrice, on_delete=models.CASCADE, related_name='full_price')
    the_rfq = models.ForeignKey(RequestForQuotation, on_delete=models.CASCADE)
    item = models.ForeignKey(RequestForQuotationItem, on_delete=models.CASCADE, related_name="rfq_item")
    quantity = models.CharField(max_length = 200, help_text='Enter the qauntity')
    unit_price = MoneyField(max_digits=14, decimal_places=2, default_currency='USD', validators=[MinMoneyValidator(0)])
    item_total_price = MoneyField(max_digits=14, decimal_places=2, default_currency='USD', validators=[MinMoneyValidator(0)])  

def quote(request, pk):
    template_name = 'request_quote/send_quote.html'
    requestedquotation = get_object_or_404(RequestForQuotation, pk=pk)
    items = RequestForQuotationItem.objects.filter(item=requestedquotation)

if request.method == 'GET':
    full_priceform =QuoteFullPriceForm()
    item_priceform = QuoteItemPriceForm()

elif request.method == 'POST':
    full_priceform =QuoteFullPriceForm(request.POST, request.FILES)
    item_priceform = QuoteItemPriceForm(request.POST, request.FILES)

    if full_priceform.is_valid() and item_priceform.is_valid():
        full_priceform = full_priceform.save(commit=False)
        full_priceform.receiver = requestedquotation.sender
        full_priceform.sender = request.user
        full_priceform.requestedquotation = requestedquotation
        full_priceform.save()

        for form in item_priceform:
            form = item_priceform.save(commit=False)
            form.full_price = full_priceform
            form.the_rfq = requestedquotation
            form.item = items
            form.save()

        messages.success(request, 'Uploaded'\
                                  'successfully')

        return redirect('/')

    else:
        messages.error(request, 'Error While Uploading')     

context = {
    'full_priceform':full_priceform,
    'item_priceform':item_priceform,
    'requestedquotation':requestedquotation,
    'items':items,

}

return render(request, template_name, context)

                            <form class="form-horizontal" method="POST" action="{% url 'rfq:quote' requestedquotation.pk %}" enctype="multipart/form-data">
                                    {% csrf_token %}

                                {% for item in items %}
                                <tr>
                                    <td align="center"><span class="badge badge-primary">#{{ item.pk }}</span></td>
                                    <td align="center">{{ item.name }}</td>
                                    <td align="center">{{ item.discription|safe|linebreaksbr }}</td>
                                    <td align="center"><img src="{% if item.image %} {{ item.image.url }} {% else %} {% static 'img/default.jpg' %} {% endif %}" alt="..." height="150" width="150"></td>
                                    <td align="center">{{ item.quantity }}</td>
                                    <td align="center">{{ item_priceform }}</td>
                                </tr>
                                {% endfor %}
                        </tbody>
                    </table>
                    {{ full_priceform.subtotal }} 
                    {{ full_priceform.delivery_charges }} 
                    {{ full_priceform.overall_total }} 
                    {{ full_priceform.validity_start_date }} 
                    {{ full_priceform.validity_end_date }} 
                    <button type="submit" class="btn btn-success mb-2">Submit</button>
                    </form>

0 个答案:

没有答案