我有以下models.py
class site(models.Model):
site_name = models.CharField(max_length=10)
site_description = models.CharField(max_length=30, blank=True, null=True)
def __unicode__(self):
return self.site_name
class asset(models.Model):
STAT_CHOICES = (('Available', 'Available'), ('Deployed', 'Deployed'), ('Down', 'Down'))
asset_id = models.CharField(max_length=30, primary_key=True)
owner = models.CharField(max_length=30, blank=True, null=True)
status = models.CharField(choices=STAT_CHOICES, max_length=30, blank=True, null=True)
site = models.ForeignKey(it_asset_site)
notes = models.CharField(max_length=300, blank=True, null=True)
def __unicode__(self):
return self.asset_id
正如我们所知,默认情况下,表“site”会创建 site_id 作为 PK。在我将数据导入表“资产”后,在 django 的管理员中,“站点”显示为“站点名称”。这种效果来自“def unicode (self):”。所以我想得到同样的效果
f = asset.objects.filter(site__site_name__contains='NNG1')
但在“f”、“site”字段中显示的是数字(site_id)而不是 NNG1(site_name),示例:
b = f.filter(site__site_name__contains='NNG1')
In [44]: b.values()[0]
Out[44]:
{'asset_id': u'3914100271',
'owner': u'',
'status': None,
'site_id': 8L,*****<-now*****
'notes': u'',
}
有一种方法可以使过滤结果变为:
{'asset_id': u'3914100271',
'owner': u'',
'status': None,
'site_name': u'NNG1',*****<-hope*****
'notes': u'',
}
像 django 管理页面显示?谢谢