Je limer les classes suivantes dans mes modèlesAfficher le nombre de lignes d'une autre table dans 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)
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
Je voudrais faire un compte sur le nombre d'abonnements sur un HardwareNode particulier et afficher que sur l'administration section pour la classe HardwareNode 10 abonnements hébergés sur le nœud 2.
J'apprends toujours Django et je ne suis pas sûr d'où j'accomplirais cela. Est-ce que je peux/devrais-je le faire dans le fichier models.py ou HTML?
Merci,
-Seth
Cela ne fonctionnera pas, car self.subscription_set est une méthode et n'a pas de longueur. De plus, vous ne devriez jamais utiliser len() sur les jeux de requête, car cela force l'évaluation. Utilisez plutôt self.subscription_set.count(). –
une raison quelconque pour utiliser lambda plutôt qu'une fonction nommée? –
Merci Daniel, je savais que j'oubliais quelque chose :-) (maintenant ça devrait être correct). Il n'y a pas de vraies raisons d'utiliser un lambda - juste une brièveté dans l'exemple. J'ai mis à jour les notes pour décourager son utilisation. –