J'ai besoin d'une déclaration de classe d'exécution de classe à partir de la base de données.Changeur de classe Python
Certains champs ont besoin d'un champ de remplacement et d'une redéclaration.
models.py
class Staff(object): name = StringField(verbose_name = "Full name") age = IntegerField(verbose_name = "Age")
utils.py
def class_changer(class_path, field_key, new_Field): pass ??????
>>> class_changer("models.Staff", "gender", BooleanField()) # Add new field to Staff
>>> class_changer("models.Country", "name", StringField()) # Add new class with name field
>>> class_changer("models.Staff", "country", ForeignKey("Country")) # Add new field to Staff
résultat est
class Staff(object): name = StringField(verbose_name = "Full name") age = IntegerField(verbose_name = "Age") gender = BooleanField() country = ForeignKey("Country") class Country(object): name = StringField()
Comment mettre en œuvre class_changer?
combinaison de 'setattr' &' eval' peut vous aider - pas robuste mais facile à mettre en œuvre – shahjapan
J'ai trouvé trop de méthode. http://en.wikipedia.org/wiki/Aspect-oriented_programming eval, setattr, decorator .... Mais je ne suis pas sûr de savoir comment la méthode sorcière mieux ???. je n'ai pas beaucoup d'expérience. – Ankhaa
Il est clair que vous faites cela avec django alors vous devriez être conscient que penser à faire ça me fait mal à cause de toutes les métaclasses qu'ils utilisent: tout est connecté à tout le reste. Normalement, je suis un programmeur chanceux, mais je vais juste m'éloigner de celui-ci. Je vous recommande de faire aussi bien et de penser à une meilleure architecture. Qu'est-ce que vous essayez d'accomplir réellement? – aaronasterling