我试图使用foreach循环和django在网页上显示一些数据。 我似乎不明白如何使用我在数据库中创建的查找表。
这些是DB中的列:
budget_audit_table:
-BudgetID
-BudgetTypeID <- Foreign Key
-ObjectAuditID
-CustomerID
-DateOfTransaction
-BudgetObject
-Amount
budget_type:
-BudgetTypeID
-BudgetType
正如您可以在model.py中假设的那样,BudgetTypeID是外键。 在budget_type表中,我目前有2行: - 费用:ID 1 - 收入:ID 2
现在我遇到的问题是我已经搜索了几天,现在试图更多地了解Django的API,并且我很难理解我如何显示每一行budget_audit_table,我如何代替显示BudgetTypeID(例如1),它显示BudgetType(例如费用)?
这是我的观点&amp;模板
view.py
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse
from django.template import RequestContext, loader
from models import BudgetAuditTable
from models import BudgetType
@login_required
def index(request):
budgetauditlist = BudgetAuditTable.objects.order_by('-budgetid')
template = loader.get_template('budget/budget.html')
context = RequestContext(request, {
'budgetauditlist': budgetauditlist,
})
return HttpResponse(template.render(context))
模板
{% for budgetauditobject in budgetauditlist %}
<tr>
<td>{{ budgetauditobject.budgetid }}</td>
<td>{{ budgetauditobject.budgettypeid }}</td>
<td>{{ budgetauditobject.objectauditid }}{{ budgetauditobject.customerid }}</td>
<td>{{ budgetauditobject.amount }}</td>
</tr>
{% endfor %}
现在也许你想知道我为什么不使用&#34; Choices&#34; django提供。因为我是一个非常数据库驱动的人,他认为数据库应该尽可能地处理并将python作为ask和receive部分。
修改
models.py
class BudgetAuditTable(models.Model):
budgetid = models.IntegerField(db_column='BudgetID', primary_key=True)
budgettypeid = models.ForeignKey('BudgetType', db_column='BudgetTypeID', blank=True, null=True)
objectauditid = models.IntegerField(db_column='ObjectAuditID', blank=True, null=True)
customerid = models.IntegerField(db_column='CustomerID', blank=True, null=True)
dateoftransaction = models.DateField(db_column='DateOfTransaction', blank=True, null=True)
budgetobject = models.CharField(db_column='BudgetObject', max_length=255, blank=True)
amount = models.DecimalField(db_column='Amount', max_digits=10, decimal_places=2, blank=True, null=True)
class Meta:
managed = False
db_table = 'budget_audit_table'
class BudgetType(models.Model):
budgettypeid = models.IntegerField(db_column='BudgetTypeID', primary_key=True)
budgettype = models.CharField(db_column='BudgetType', max_length=25, blank=True)
class Meta:
managed = False
db_table = 'budget_type'
答案 0 :(得分:1)
你应该真的展示你的模特。如果budgettypeid
是Django ForeignKey字段,那么budgetauditobject.budgettypeid
将为您提供实际的BudgetType对象,然后您可以使用普通的点表示法访问其字段。
答案 1 :(得分:0)
而不是:
<td>{{ budgetauditobject.budgettypeid }}</td>
你试过了吗?
<td>{{ budgetauditobject.budgettypeid.budgettype }}</td>