Ne créez pas de modèles avec des paramètres args. Si vous créez un modèle comme ceci :
User('name','email')
Cela devient très vite illisible car la plupart des modèles nécessitent plus que cela pour l'initialisation. Vous pourriez très facilement vous retrouver avec :
User('Bert', 'Reynolds', 'me@bertreynolds.com','0123456789','5432106789',....)
Un autre problème est que vous ne savez pas si "Bert" est le prénom ou le nom. Les deux derniers chiffres pourraient facilement être un numéro de téléphone et un identifiant système. Mais si ce n'est pas explicite, vous les confondrez plus facilement, ou vous mélangerez l'ordre si vous utilisez des identifiants. De plus, le fait de procéder par ordre imposera une contrainte supplémentaire aux autres développeurs qui utilisent cette méthode et ne se souviendront pas de l'ordre arbitraire des paramètres.
Vous devriez plutôt préférer quelque chose comme ceci :
User(
first_name='Bert',
last_name='Reynolds',
email='me@bertreynolds.com',
phone='0123456789',
system_id='5432106789',
)
Si c'est pour des tests ou quelque chose comme ça, vous pouvez utiliser une usine pour créer rapidement des modèles. Le lien factory boy peut être utile : http://factoryboy.readthedocs.org/en/latest/
2 votes
Pourquoi faites-vous cela ? Cette capacité fait partie d'un modèle Django sans que vous ayez à écrire le moindre code.
1 votes
Lorsque j'essaie sans l'init, ils sont tous placés dans le mauvais champ pour une raison quelconque, à moins que je ne spécifie User(name='aoeu'), ce qui prend beaucoup d'espace supplémentaire.
6 votes
Qu'est-ce qui ne va pas avec les affectations explicites champ=valeur ? À long terme, vous serez probablement plus heureux. Après tout, vous n'écrivez que très peu de ce type de lignes de code.