我必须保留一份服务器及其内存模块的清单。驱动器。我创建了三个表。我希望能够检索有关服务器的所有信息,包括内存和驱动器信息,并将其显示在一个页面中。
class Server(models.Model):
Name = models.CharField(max_length=25)
ServiceTag = models.CharField(primary_key=True,max_length=12) #Uniquely identifies each server
def __unicode__(self):
return u'%s %s ' % (self.Name, self.ServiceTag)
class MemoryModule(models.Model):
Manufacturer = models.CharField(max_length=15)
Size = models.CharField(max_length=15)
server = models.ForeignKey(Server, max_length=12)
mems = MemoryManager()
def __unicode__(self):
return u'%s %s' % (self.Manufacturer, self.Size)
class Drive(models.Model):
Manufacturer = models.CharField(max_length=15)
Size = models.CharField(max_length=15)
server = models.ForeignKey(Server, max_length=12)
drvs = DriveManager()
def __unicode__(self):
return u'%s %s %s %s %s' % (self.Manufacturer, self.Size)
我正在考虑添加以下“经理”:
class MemoryManager(models.Manager):
def get_query_set(self):
return super(MemoryManager, self).get_query_set().filter(server='CC98361')
class DriveManager(models.Manager):
def get_query_set(self):
return super(DriveManager, self).get_query_set().filter(server='CC98361')
...以便以下内容生成memorymodules&与服务标签值关联的驱动器:
MemoryModule.mems.all()
Drive.drvs.all()
一个。这是一种准确的方法吗? 湾如果是这样,我将如何在模板中显示“MemoryModule.mems.all()和Drive.drvs.all()?”
答案 0 :(得分:0)
一个。这看起来是正确的,但你测试过了吗?使用django模型,查看代码运行的开销是否比使用python时要多。我看不出明显的错误;这看起来by-the-book。
湾我会尝试类似的东西:
<table>
{% for mem in MemoryModule.mems.all %}
<tr>
<td>{{ mem.Manufacturer }}</td>
<td>{{ mem.Size }}</td>
<td>{{ mem.drvs }}</td>
</tr>
{% endfor %}
</table>
修改
糟糕!我的错。 django模板引擎不需要任何看起来像函数的东西。这太开发了。在最坏的情况下,它允许您调用函数,但前提是它们不带参数,并且只有它们看起来不像函数调用。因此,没有括号。也就是说,您仍然需要MemoryModule
可见,即将{"MemoryModule": models.MemoryModule}
传递到字典中。更好的是传递{"mems":models.MemoryModule.mems.all()}
并在模板中调用{% for mem in mems %}
。