Comment puis-je remplir le formulaire avec le modèle de données de l'objet?
Je veux remplir un formulaire avec des données d'instance du modèle. Mais mon formulaire a moins de champs que modèle. Si j'ai un code comme ceci:
class Item(models.Model)
name = models.CharField(max_length=100)
price = models.PositiveIntegerField()
class ItemForm(forms.Form):
name = forms.CharField()
Que de mal, c'est grâce à cette fonction, et comment il devrait ressembler pour être bon?
def bound_form(request, id):
item = Item.objects.get(id=id)
form = ItemForm(item.name)
return render_to_response('bounded_form.html', {'form': form})
Je avoir d'erreur comme ceci: AttributeError: 'ItemForm' object has no attribute 'get'
- docs.djangoproject.com/en/1.3/topics/forms/modelforms
- Êtes-Vous sûr que je dois lire quelque chose à propos de
ModelForm
si je suis en utilisantForm
ou pensez-Vous que je ne sais pas ce dont j'ai besoin?
Vous devez vous connecter pour publier un commentaire.
bound_form
est un point de vue, il va dans views.py et il en passant lainitial
argument de la forme à la forme de valeurs.Généralement lors de la création d'un formulaire pour un Modèle, vous souhaitez utiliser ModelForm. Il maintient le principe SEC pour ne pas avoir à redéfinir les types de champ pour la classe de formulaire. Elle aussi s'occupe automatiquement de validation. Vous de conserver toute la flexibilité nécessaire pour personnaliser les champs et les widgets utilisés. Utilisation
fields
pour spécifier les champs que vous souhaitez ouexclude
pour spécifier les champs à ignorer. Avec votre exemple:get_object_or_404()
est utile ici comme une forme d'erreur de manipulation. À l'aide deItem.objects.get(id=id)
sur un ID manquant va jeter un uncaughtItem.DoesNotExist
exception dans le cas contraire. Vous pouvez utiliser un try/except bloquer aussi bien sûr.ModelForm
est bien, mais comment sur la création et l'initialisation d'un champ supplémentaire, peut-être avec une valeur à partir d'une ForeignKey du modèle?