Je veux ajouter peu de champs à chaque modèle de mon application Django. Cette fois, il est Dans ma solution finale, j'ai modifié le constructeur de modèle pour réorganiser les champs de la nouvelle instance: P> < Pré> xxx pré> Ça fonctionne comme prévu, mais je me demande, y a-t-il un meilleur moyen de faire monter mon objectif? p> p> créé_at code>, mise à jour_at code> et notes code>. Le code de duplication pour tous les plus de 20 modèles semble stupide. J'ai donc décidé d'utiliser une classe de base abstraite qui ajouterait ces champs. Le problème est que les champs hérités de la classe de base abstraite sont d'abord dans la liste de terrain dans Admin. Déclaring Ordonnance de champ pour chaque classe ModelAdmin n'est pas une option, c'est encore plus de code en double qu'avec la déclaration de champ manuelle.
3 Réponses :
Si vous avez principalement besoin de la commande pour l'administrateur de Django, vous pouvez également créer votre classe «générique» -Admin via la classe d'administration de Django sous-classée. Voir http://docs.djangoproject.com/ EN / DEV / INTRO / TUTORIAL02 / # Personnaliser-the-admin-forme pour personnaliser l'affichage des champs dans l'administrateur.
Vous pouvez écraser le En plus que je pense que ce n'est pas une bonne pratique de modifier le (privé) __ init __ code> pour configurer les champs / champs de configuration de la création de l'instance d'administration comme vous le souhaitez. Par exemple. Vous pouvez faire quelque chose comme: _field_name_cache code>! p> p>
J'avais le même problème, mais j'ai trouvé que ces solutions sont problématiques, alors voici ce que j'ai fait: changer de champique dans l'administrateur a plus de sens pour moi, mais changer les champs du modèle. p> p>
Je n'ai pas non plus aimé les autres solutions, donc je viens de modifier directement les fichiers de migrations. P>
Chaque fois que vous créez une nouvelle table dans les modèles.py, vous devrez exécuter "Python Manage.py Makemigrations" (je crois cela à Django> = V1.7.5). Une fois que vous faites cela, ouvrez le fichier de migrations nouvellement créé dans votre répertoire_app_path / migrations / em> et déplacez simplement les lignes dans la commande de votre choix. Puis exécutez "python greas.py migrate". Voilà! En entrant dans "Python Manage.py dbshell", vous pouvez voir que l'ordre des colonnes est exactement ce que vous les avez voulu! P>
inconvénient à cette méthode: vous devez le faire manuellement pour chaque table que vous créez, mais heureusement, les frais généraux sont minimes. Et cela ne peut être fait que lorsque vous créez une nouvelle table, de ne pas modifier un existant. p>