comment faire pour afficher une django ModelForm champ non modifiable
de prendre mon premier cours avec django ModelForm
,j'ai voulu donner à l'utilisateur ,la possibilité de modifier une entrée dans un blog.Le BlogEntry
a un date,postedTime, title and content
.Je veux montrer à l'utilisateur un editform qui montre tous ces domaines,mais avec seulement title and content as editable
. Le date and postedTime should be shown as uneditable
.
class BlogEntry(models.Model):
title = models.CharField(unique=True,max_length=50)
description = models.TextField(blank=True)
date = models.DateField(default=datetime.date.today)
postedTime = models.TimeField(null=True)
...
Pour l'ajout d'une entrée ,j'utilise un ModelForm de façon normale..
class BlogEntryAddForm(ModelForm):
class Meta:
model = BlogEntry
...
Mais comment puis-je créer le formulaire d'édition?Je veux qu'il show the date,postedTime as uneditable
(mais encore de les afficher sur la forme) et de laisser l'utilisateur de modifier la title and description
.
si je l'utilise,exclude in class Meta
de la date et de postedTime,que leur cause ne figurent pas sur le formulaire.Alors,comment puis-je montrer comme non modifiable?
class BlogEntryEditForm(ModelForm):
class Meta:
model = BlogEntry
...?...
OriginalL'auteur markjason72 | 2011-08-17
Vous devez vous connecter pour publier un commentaire.
Dans la forme de l'objet, de déclarer l'attribut du champ comme
readonly
:OriginalL'auteur dusual
Est
date
champ de représenter une date lors de l'entrée d'abord créé ou lorsqu'il a été modifié la dernière fois? Si d'abord, puis utiliserauto_now_add
option d'utiliserauto_now
. Qui est:sera mis
date
à maintenant lors de l'entrée sera créée.auto_now_add
rend champ non modifiable. Pour les autres cas, utilisezmodifiable
option pour faire un champ non modifiable. Par exempleAussi, probablement, vous permettra d'ajouter
posted
champ booléen àEntry
modèle, il est pratique de définirauto_now
surpostedDate
. Il sera mis enpostedDate
à maintenant, chaque fois que vous modifiez une Entrée, y compris lorsque vous définissezposted
àTrue
.OriginalL'auteur Kirill
J'ai mis en place cette façon: https://djangosnippets.org/snippets/10514/
cette application utilise les données d'instance du modèle pour tous les champs en lecture seule et non pas les données obtenues lors du traitement du formulaire
ci-dessous le même code mais en utilisant son exemple
Utilisation:
ou utiliser la fonction
OriginalL'auteur Fabio C. Barrionuevo da Luz
Cela permettra d'éviter tout utilisateur de piratage, de la demande:
Formulaire personnalisé exemple:
OriginalL'auteur xleon
De la la documentation,
Any fields in this option (which should be a list or tuple) will display its data as-is and non-editable
. J'ai essayé, mais je peux toujours cliquer sur le champ et le type de choses en elle. Comment est-elle vraiment efficace?Est-ce possible pour un ModelForm?Je pense que les readonly_fields' est spécifique à ModelAdmin docs.djangoproject.com/en/dev/ref/contrib/admin/...
je pense que readonly_fields est admin spécifiques et également introduit dans django 1.2
OriginalL'auteur Lakshman Prasad