Jim*_*Jim 2 python django django-models
我的模型文件中有以下类
class HardwareNode(models.Model):
ip_address = models.CharField(max_length=15)
port = models.IntegerField()
location = models.CharField(max_length=50)
hostname = models.CharField(max_length=30)
def __unicode__(self):
return self.hostname
class Subscription(models.Model):
customer = models.ForeignKey(Customer)
package = models.ForeignKey(Package)
location = models.ForeignKey(HardwareNode)
renewal_date = models.DateTimeField('renewal date')
def __unicode__(self):
x = '%s %s' % (self.customer.hostname, str(self.package))
return x
Run Code Online (Sandbox Code Playgroud)
我想计算特定HardwareNode上的订阅数量,并在管理部分显示HardwareNode类,例如节点2上托管的10个订阅.
我还在学习Django,我不知道我会在哪里完成这个.我可以/应该在models.py或HTML中执行此操作吗?
谢谢,
-seth
创建a时foreign_key,另一个模型会获得一个管理器,它返回第一个模型的所有实例(请参阅向后导航)在您的情况下,它将命名为" subscription_set".
此外,Django允许模型中的虚拟字段,称为"模型方法",它们与数据库数据无关,但是作为模型的方法实现(参见模型方法)
把所有东西放在一起,你可以得到这样的东西:
class HardwareNode(models.Model):
ip_address = models.CharField(max_length=15)
port = models.IntegerField()
location = models.CharField(max_length=50)
hostname = models.CharField(max_length=30)
subscription_count = lambda(self: self.subscription_set.count())
Run Code Online (Sandbox Code Playgroud)
然后,在要在管理面板中列出的字段列表中包含subscription_count.
注意:像往常一样,我没有检查这段代码,它甚至可能没有按原样运行,但它应该对如何处理您的问题有所了解; 此外,我使用lambda只是为了简洁,但通常我认为使用命名的一个更好的选择(样式,可维护性等).
| 归档时间: |
|
| 查看次数: |
1657 次 |
| 最近记录: |