gpt4 book ai didi

python - 在 Django 中显示另一个表的行数

转载 作者:行者123 更新时间:2023-11-28 21:30:53 24 4
gpt4 key购买 nike

我的模型文件中有以下类

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

我想计算特定 HardwareNode 上的订阅数量,并将其显示在 HardwareNode 类的管理部分,例如10 个订阅托管在节点 2 上。

我仍在学习 Django,我不确定在哪里可以完成它。我可以/应该在 models.py 还是在 HTML 中执行此操作?

谢谢,

-赛斯

最佳答案

当创建一个 foreign_key 时,另一个模型得到一个管理器,该管理器返回第一个模型的所有实例(参见 navigating backward )在您的例子中,它将被命名为“subscription_set”。

此外,Django 允许模型中的虚拟字段(称为“模型方法”)不连接到数据库数据,但作为模型的方法实现(参见 model methods)

把所有的东西放在一起,你可以得到这样的东西:

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())

然后,在要在管理面板中列出的字段列表中包含 subscription_count。

注意:像往常一样,我没有检查这段代码,它甚至可能不会按原样运行,但它应该给出一些关于如何解决你的问题的想法;此外,为了简洁起见,我使用了 lambda,但通常我认为使用命名的 lambda 会是更好的选择(风格、可维护性等)。

关于python - 在 Django 中显示另一个表的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1048782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com