Un moment de retour, j'ai fait une classe modèle. J'ai fait plusieurs modelormes pour cela et cela a fonctionné magnifiquement.
J'ai récemment dû ajouter un autre champ optionnel (vierge = true, null = vrai) afin que nous puissions stocker certaines données de relation entre les utilisateurs. C'est essentiellement un système de référence.
Le problème est d'ajouter que ce nouveau champ a signifié que le champ de référence apparaît là où je n'ai pas changé les modelforms pour l'exclure. Normalement, cela signifierait seulement 10 minutes supplémentaires et les excluant, mais dans ce cas, en raison de la politique de gestion de projet hors de mon contrôle, je n'ai aucun contrôle sur les modèles pour cette application.
Puis-je soit:
de la DOCS sur en utilisant un sous-ensemble de champs sur le formulaire :
Définir modifitable = False sur le champ modèle. En conséquence, tout formulaire créé à partir du modèle via Modelform n'inclut pas ce champ.
Vous pouvez définir une sous-classe de champ de modèle personnalisée et remplacer la méthode formfield()
pour renvoyer un champ avec un widget Hideninput. Voir la documentation des champs personnalisés .
Bien que vous ayez mentionné que vous ne pouvez pas utiliser l'exclusion dans votre cas, je pense que les autres qui rencontrent cette réponse (comme moi-même, sur la base du titre) peuvent le trouver utiles.
Il est possible de masquer sélectivement les champs à l'aide de exclude
dans modeladmin, voici un extrait de quelque chose que je travaille sur:
class ItemsAdmin(admin.ModelAdmin):
form = ItemsForm
actions = None
list_display = ('item_id', 'item_type', 'item_title', 'item_size', 'item_color',)
search_fields = ('item_id', 'item_title',)
inlines = [ImageInline,]
readonly_fields = ('disable_add_date','disable_remove_date',)
exclude = ('add_date', 'remove_date',)
###.............