我有两个模型,Invoice
和Item
:
class Invoice(models.Model):
vendor = models.CharField(max_length=200)
client = models.CharField(max_length=200)
number = models.CharField(max_length=200)
date = models.DateTimeField(max_length=200)
due_date = models.DateTimeField()
def __str__(self):
return "Invoice number: {}".format(self.number)
class Item(models.Model):
invoice = models.ForeignKey(Invoice, on_delete=models.CASCADE)
description = models.TextField()
quantity = models.DecimalField(max_digits=19, decimal_places=2)
rate = models.DecimalField(max_digits=19, decimal_places=2)
amount = models.DecimalField(max_digits=19, decimal_places=2)
subtotal = models.DecimalField(max_digits=19, decimal_places=2)
tax = models.DecimalField(max_digits=19, decimal_places=2)
notes = models.TextField()
terms = models.TextField()
def __str__(self):
return "{}".format(self.description)
这些是与模型相关的表格:
from django import forms
from .models import Invoice, Item
class InvoiceForm(forms.ModelForm):
class Meta:
model = Invoice
fields = ('vendor','client', 'number', 'date', 'due_date')
widgets = {
'date': forms.TextInput(attrs={'class':'datepicker'}),
'due_date': forms.TextInput(attrs={'class':'datepicker'}),
}
class ItemForm(forms.ModelForm):
class Meta:
model = Item
fields = ('description', 'quantity', 'rate', 'amount',
'subtotal', 'tax', 'notes', 'terms')
我的问题是如何引用模板中ItemForm
的某些字段?
因为我对InvoiceForm没有任何问题。例如,这有效:
<!-- Client -->
<div class="row">
<div class="input-field col s4">
<label for="{{ form.client.id_for_label }}">Client</label>
{{ form.client }}
</div>
<div class="input-field col s4 offset-s4">
<label for="{{ form.due_date.id_for_label }}">Due Date</label>
{{ form.due_date }}
</div>
</div>
views.py
def invoice_generator(request):
form = InvoiceForm
return render(request, 'invoiceapp/invoice_generator.html', {'form': form})
但我不知道如何引用ItemForm,例如这不起作用:
<div class="input-field col s5">
{{ form.description }}
</div>
答案 0 :(得分:2)
在您的观点中,请执行以下操作:
def invoice_generator(request):
data = {}
data['invform'] = InvoiceForm()
data['itmform'] = ItemForm()
return render(request, 'invoiceapp/invoice_generator.html', data)
在你的模板中:
<!-- Client -->
<div class="row">
<div class="input-field col s4">
<label for="{{ invform.client.id_for_label }}">Client</label>
{{ invform.client }}
</div>
<div class="input-field col s4 offset-s4">
<label for="{{ invform.due_date.id_for_label }}">Due Date</label>
{{ invform.due_date }}
</div>
<!-- Item form -->
<div class="input-field col s4 offset-s4">
<label for="{{ itmform.due_description.id_for_label }}">Description</label>
{{ itmform.description }}
</div>
</div>