Maintenant, j'ai ce code:Est-il possible de définir dynamiquement les noms des champs du modèle?
class Mymodel(models.Model):
xxxx_count = ForeignCountField(filter={'foreign_table__xxxx': True})
yyyy_count = ForeignCountField(filter={'foreign_table__yyyy': True})
zzzz_count = ForeignCountField(filter={'foreign_table__zzzz': True})
qqqq_count = ForeignCountField(filter={'foreign_table__qqqq': True})
ssss_count = ForeignCountField(filter={'foreign_table__ssss': True})
rrrr_count = ForeignCountField(filter={'foreign_table__rrrr': True})
Je veux quelque chose comme ceci:
class Mymodel(models.Model):
for code in ['xxxx','yyyy','zzzz','qqqq','ssss','rrrr']:
setattr(self, '%s_count' % code, ForeignCountField(filter={'foreign_table__%s' % code: True}))
Mais quand j'essaie de le faire, l'erreur soulevée: « auto n'a pas défini ». Dois-je mettre ce code dans un autre endroit?
Très bon point, j'ai oublié cette approche (ça fait tellement longtemps que j'en ai besoin, depuis que Django a hérité du modèle abstrait). C'est probablement une meilleure solution que d'écrire une métaclasse. –
Oui, ça marche bien. Une seule mauvaise chose, la définition de ce champ situé à 2 endroits différents dans le code: classe à l'intérieur et à l'extérieur. – ramusus