【发布时间】: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})
现在我面临的问题是:
- 呈现的模板不显示 Receivalbe 名称,而是显示
self.user.receivalbe_name - 如何只显示与登录用户相关的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