Django-fr

Forum

  • Accueil
  • » Django-fr
  • » Comment autoriser l'insertion d'une valeur NULL dans un champ CharFiel

#1 02-05-2011 10:25:28

rgfors
Membre
Inscription : 06-04-2011
Messages : 6

Comment autoriser l'insertion d'une valeur NULL dans un champ CharFiel

Bonjour,

Tout d'abord je suis débutant avec Django.

J'aimerai savoir comment autoriser l'insertion d'une NULL dans un champ CharField.
Dans mon exemple je dois pouvoir insérer un enregistrement en laissant le champ "nomfichier" vide.
Comment faire?

Voici ma classe:

class Projet(models.Model):
    donnee = models.ForeignKey(Donnee)
    id_fedora = models.CharField(max_length=50, blank=True)
    code = models.CharField(max_length=50)
    label = models.CharField(max_length=250)
    datecreation = models.DateField('date published')
    nomfichier = models.CharField(max_length=250, null=True, blank=True)
   
    def __unicode__(self):
        return self.label


Voici ma vue pour l'insertion d'un nouveau record:

def detailneuf(request):
    if request.method == "POST":
        vl_monform = ProjetForm(request.POST)
       
        vl_monform.save()
       
        return redirect('/projets/forms/new/')
    else:
        vl_monform = ProjetForm()
       
        return render_to_response('projects/newprojet.html', {'pe_monform': vl_monform},
                                  context_instance = RequestContext(request))


Merci d'avance pour l'aide.

Hors ligne

#2 02-05-2011 15:09:17

quinode
Membre
Lieu : Auvergne
Inscription : 14-10-2010
Messages : 89
Site Web

Re : Comment autoriser l'insertion d'une valeur NULL dans un champ CharFiel

ton code est ok (blank=True, null=True)
le souci vient surement du fait que tu as fait un "manage.py syncdb" avant de rajouter ces options-là
du coup, ta base de données n'autorise pas la valeur nulle

soit tu recrée ta base et tu refais un syncdb, soit tu regarde du coté de South, un utilitaire de migration qui fait évlouer la db selon les changements de tes modèles.

Hors ligne

#3 03-05-2011 08:36:07

rgfors
Membre
Inscription : 06-04-2011
Messages : 6

Re : Comment autoriser l'insertion d'une valeur NULL dans un champ CharFiel

Alors j'ai recréé ma table mais j'ai toujours le même problème.

Le message est le suivant:
"The Projet could not be created because the data didn't validate"

Ici je mets aussi le code de mon template:

{% extends "base.html" %}
{% block scripts %}
    {{ pe_monform.media }}
    <script>
    $(function() {
        $( "#id_datecreation" ).datepicker();
    });
    </script>
{% endblock %}
{% block content %}
    <table>
        <form method="post" action="/projets/forms/new/">{% csrf_token %}
            {{ pe_monform.as_table }}
            <tr>
                <td>&nbsp;</td>
                <td><input type="submit" name="save" value="Save"></td>
            </tr>
        </form>
    </table>
{% endblock %}

Voici aussi le code de mon form:

class ProjetForm(ModelForm):
    code = CharField(widget = TextInput(attrs = {'size': 20}), label = 'Project Code')

    label = CharField(widget = Textarea(attrs = {'cols': 25, 'rows': 10}), label = 'Project Label')
   
    nomfichier = CharField(widget = TextInput(attrs = {'size': 70}), label = 'File Name')
   
    datecreation = DateField(widget = CalendarWidgetJquery, label = 'Creation Date')
   
    class Meta:
        model = Projet
       
        fields = ('donnee', 'code', 'datecreation', 'label', 'nomfichier')


Si dans ma classe ProjetForm je supprime la colonne "nonfichier" et que j'essai d'insérer un enregistrement, ça fonctionne.

Je ne comprends plus rien :-(

Hors ligne

#4 03-05-2011 11:29:15

rgfors
Membre
Inscription : 06-04-2011
Messages : 6

Re : Comment autoriser l'insertion d'une valeur NULL dans un champ CharFiel

J'ai trouvé.

Le problème était au niveau de mon form (class ProjetForm).

Avant j'avais le code suivant et ça ne fonctionnait pas:
nomfichier = CharField(widget = TextInput(attrs = {'size': 70}), label = 'File Name').

J'ai ajouté "required=False" dans mon widget et maintenant j'ai le code suivant:
nomfichier = CharField(widget = TextInput(attrs = {'size': 70}), required=False, label = 'File Name').

Et ça fonctionne.

Hors ligne

#5 03-05-2011 23:29:52

quinode
Membre
Lieu : Auvergne
Inscription : 14-10-2010
Messages : 89
Site Web

Re : Comment autoriser l'insertion d'une valeur NULL dans un champ CharFiel

rgfors a écrit :

Alors j'ai recréé ma table mais j'ai toujours le même problème.

ok, donc ce n'était pas le meme probleme...

Hors ligne

  • Accueil
  • » Django-fr
  • » Comment autoriser l'insertion d'une valeur NULL dans un champ CharFiel

Pied de page des forums