2010-09-24 8 views
0

Comment puis-je ajouter dans ma classe personnalisée une option à un champ existant dans le modèle parent? Plus concrètement: J'écris un modèle de commentaire personnalisé héritant de django.contrib.comments.models.Comment. Je voudrais ajouter l'option editable = False au IPAddressField.Comment puis-je ajouter une option à un champ hérité d'une classe parente?

merci

+0

Quelle classe héritez-vous? Est-ce 'Commentaire'? –

Répondre

0

Je ne sais pas d'un moyen d'ajouter une option à un champ existant dans une super classe (si quelqu'un sait mieux faire part). Vous ne pouvez pas surcharger le champ car la superclasse n'est pas abstraite.

Si vous souhaitez uniquement empêcher l'édition du champ, vous pouvez utiliser un formulaire de modèle personnalisé. Ce formulaire peut valider pour s'assurer que le champ Adresse IP ne peut pas être modifié.

0

Je suppose que vous ne voulez pas l'afficher ou le rendre modifiable dans l'Admin.

from django.contrib import admin 
from django.contrib.comments.models import Comment 

class CommentAdmin(admin.ModelAdmin): 
    exclude = ('ip_address',) 

admin.site.unregister(Comment) 
admin.site.unregister(Comment, CommentAdmin) 

Vous pouvez également utiliser ready_only:

readonly_fields = ['ip_address'] 
+0

Non seulement dans l'admin. Je vais utiliser des formulaires personnalisés. Merci pour l'aide. – jul