【问题标题】:How to pass a value in django select form?如何在 django select 表单中传递一个值?
【发布时间】:2016-04-19 06:29:52
【问题描述】:

我正在创建发票应用程序。 我有一个模型应收账款作为

class Receivables(models.Model):
    user=models.ForeignKey(settings.AUTH_USER_MODEL)
    receivable_name=models.CharField(max_length=250)
    receivable_address=models.CharField(max_length=250,blank=True)
    receivable_email=models.CharField(max_length=250,blank=True)
    receivable_telephone=models.CharField(max_length=250,blank=True)
    receivable_VAT=models.CharField(max_length=250,blank=True)
    receivable_Service_Tax=models.CharField(max_length=250,blank=True)
    receivable_PAN=models.CharField(max_length=250,blank=True)

    def __str__(self):
        return self.user.receivable_name 

有一个模型 serviceinvoice 为

class serviceinvoice(models.Model):
    user=models.ForeignKey(User,related_name='invoice')    
    invoice_number=models.PositiveIntegerField()
    invoice_date = models.DateField(auto_now_add=True)
    invoice_receivable=models.ForeignKey(Receivables)
    total_amount=models.DecimalField(decimal_places=2,max_digits=20)
    total_amountwithtax=models.DecimalField(decimal_places=2,max_digits=20)

    def __str__(self):
        return invoice_number

form.py for serviceinvoice 模型为

class createinvoiceform(forms.ModelForm):
    class Meta:
        model=serviceinvoice
        exclude=('user',)

views.py 用于此表单

@login_required
def createinvoice(request):
    if request.method == 'POST':
        inv_form=createinvoiceform(data=request.POST)
        if inv_form.is_valid():
            new_form=inv_form.save(commit=False)
            new_form.user=request.user
            new_form.save()
            return HttpResponse('Invoice created')
    else:
        inv_form=createinvoiceform()
    return render(request,'account/createinvoice.html',{'inv_form':inv_form})

现在我面临的问题是:

  1. 呈现的模板不显示 Receivalbe 名称,而是显示 self.user.receivalbe_name
  2. 如何只显示与登录用户相关的receivalbe_name?

【问题讨论】:

  • 1.删除__str__ 中的引号 2. 如何识别登录用户?
  • 您的问题“self.user.receivalbe_name”中有拼写错误,不应该是 self.user.receivable_name。另外,当您说与登录用户相关的应收名称时,您到底是什么意思?有什么关系?
  • @RajeshYogeshwar 由 django 自动生成。我没有在任何地方编码!!!!换来换去。
  • @KlausD。完成但没有给出错误'用户'对象没有属性'receivable_name'
  • 那是因为用户与具有名称的单独类具有一对多关系

标签: python django django-models django-forms django-views


【解决方案1】:

通过将以下内容放入views.py中解决了第二个问题:

inv_form=createinvoiceform()
        inv_form.fields["invoice_receivable"].queryset=Receivables.objects.filter(user=request.user)

【讨论】:

    猜你喜欢
    • 2018-11-11
    • 1970-01-01
    • 2020-12-12
    • 2020-01-17
    • 1970-01-01
    • 2020-02-09
    • 2021-03-09
    • 1970-01-01
    • 2013-03-03
    相关资源
    最近更新 更多