2011-08-02 4 views
-1

Je souhaite avoir un formulaire soumis par l'utilisateur dans une certaine page. Mon modèle est comme cecidjango form version 1.3

class Ask(models.Model): 
    name = models.CharField(max_length=500) 
    designation = models.CharField(max_length=200, blank=True) 
    email = models.EmailField() 
    phone = models.CharField(max_length=20, blank=True) 
    avatar = models.ImageField(upload_to="/ask/users/avaters", blank=True) 
    question = models.CharField(max_length= 1024) 
    ques_time = models.DateField() 
    answere = models.TextField() 
    ans_time = models.DateField() 
    display = models.BooleanField() 
    asker_ip = models.CharField(max_length=100) 

De l'utilisateur je recevrai le nom, la désignation, l'email, le téléphone, l'avater et la question. question_time et ans_time seront automatiquement mis à jour pendant ce temps. La réponse sera remplie à partir du propriétaire du site dans l'admin django. asker_ip sera automatiquement reçu de l'adresse IP du navigateur. J'ai un modèle de base dans la section modèle. Lorsque l'utilisateur soumis du formulaire redirigera vers cette page mais avec un message de réussite dans la partie du formulaire. BTW Je veux que l'utilisateur télécharge cette image avater.

Maintenant, comment dois-je commencer sur ce sujet. Si vous pouvez juste décrire comment commencer à écrire ou m'envoyer une URL qui serait utile.

+0

Je ne suis pas sûr de ce que vous êtes demander, il semble que vous voulez ce qui suit: l'utilisateur soumet le formulaire, une fois qu'il a été soumis avec succès, vous rendez la même page mais avec un message de succès au lieu du formulaire. Est-ce vrai? – Phil

+0

oui, aussi je dois savoir comment entrer les données soumises par l'utilisateur dans la base de données – themunna

+0

Quelque chose de mal avec la très bonne documentation sur [formulaires pour les modèles] (https://docs.djangoproject.com/fr/1.3/topics/forms/modelforms /)? –

Répondre

2

vous pouvez faire quelque chose comme ceci:

  • créer une vue qui valide la forme like this: s'il y a un POST (donc, l'utilisateur a soumis un formulaire), il crée un objet formulaire avec toutes les valeurs présentées dans ce , alors vous pouvez manipuler. S'il n'y a pas de requête POST, il crée simplement un formulaire vide pour le modèle. Dans les deux cas, la vue renvoie un formulaire au modèle. peut-être utiliser une autre variable définie sur True/False si le formulaire a été soumis ou s'il est vide.
  • dans le modèle, vous pouvez vérifier avec les balises de modèle si la forme existe (avec la variable) ou non, avec quelque chose comme:

    {% si form_sent%}

    Bravo! Vous avez présenté quelque chose

    {% else%} {{ form.as_p}} { % endif%} quelque chose comme

cela. cela devrait couvrir la première partie de votre question. This est ce que vous cherchez pour le téléchargement de fichiers. Lisez cette page très attentivement, si vous manquez quelque chose, le téléchargement ne va pas (ie, je ne me souviens jamais d'inclure le mime correct dans le formulaire, et j'ai toujours des erreurs)

+0

en fait j'ai déjà le formulaire dans le modèle. Je veux juste enregistrer les données lorsque le formulaire est soumis. Alors laissez-moi effacer, je vais faire un fichier form.py. Validez le formulaire dans la vue. Où devrais-je dire enregistrer les données de ce formulaire? BTW j'ai lu le premier lien que vous avez donné. Cela va au-dessus de ma tête. :) une autre chose que je reçois l'ip de l'utilisateur/formateur de formulaire? – themunna

+0

vous effectuez l'enregistrement dans la vue, puis tout est stocké dans votre backend. ex: le formulaire vous donne des données valides, vous stockez les données dans un objet Ask, puis vous appelez la méthode save() depuis la vue (où vous manipulez vos données) et stocke l'objet dans la base de données. Si vous vérifiez avec mon premier lien, l'enregistrement peut être fait après l'appel de la méthode is_valid() (à l'intérieur de ce bloc) –