2010-04-06 6 views
-1

Voici le code:quelle est cette 'carte' mean..in django

def create(request, form_class=MapForm, template_name="maps/create.html"): 
    map_form = form_class(request.POST or None) 

    if map_form.is_valid(): 
     map = map_form.save(commit=False) 

et map_form est:

class MapForm(forms.ModelForm): 

    slug = forms.SlugField(max_length=20, 
     help_text = _("a short version of the name consisting only of letters, numbers, underscores and hyphens."), 
     #error_message = _("This value must contain only letters, numbers, underscores and hyphens.")) 
     ) 

    def clean_slug(self): 
     if Map.objects.filter(slug__iexact=self.cleaned_data["slug"]).count() > 0: 
      raise forms.ValidationError(_("A Map already exists with that slug.")) 
     return self.cleaned_data["slug"].lower() 

    def clean_name(self): 
     if Map.objects.filter(name__iexact=self.cleaned_data["name"]).count() > 0: 
      raise forms.ValidationError(_("A Map already exists with that name.")) 
     return self.cleaned_data["name"] 

    class Meta: 
     model = Map 
     fields = ('name', 'slug', 'description') 

et je veux savoir: quelle est la 'carte' utilisé pour ?

mise à jour:

ce qui est le '' map.members moyenne ???

map.members.add(request.user) 

Répondre

2

Je ne suis pas sûr carte qui-vous dire exactement, mais si elle est la suivante:

map = map_form.save(commit=False) 

alors il est juste une variable appelée map qui détient une instance du modèle Map/classe . Chaque fois que vous enregistrez un formulaire de modèle, vous obtenez une instance du modèle respectif.
En utilisant commit=False vous dites explicitement que cette instance devrait pas être enregistré dans la base de données (maintenant). Ceci est principalement utilisé pour faire autre chose avec le modèle avant de l'enregistrer dans la base de données. Pour faire référence à votre question: L'utilisateur actuel est lié à l'instance map nouvellement créée. Comme cela doit être fait dans la vue (pour accéder à la requête qui contient l'utilisateur), l'instance n'est pas enregistrée au début, l'utilisateur est ajouté, puis l'instance est enregistrée.
Donc, si vous voulez enregistrer ce cas, vous devez appeler la méthode save() sur cette instance manuellement:

map = map_form.save(commit=False) # create instance from form data (validated) 

if some_condition_is_met: 
    map.property = set_a_certain_value 

map.members.add(request.user) #relate current user to map 
map.save() # now save the model to the database 

Mais je ne nommerai pas la map variable Python a une fonction nommée builtin map(). Si vous essayez d'appeler cette fonction plus tard dans votre code, cela déclenchera probablement un TypeError lorsque vous remplacerez le nom des fonctions par une instance d'un objet.

En savoir plus sur model forms.

+0

salut Félix, regardez la mise à jour. – zjm1126

+0

@ zjm1126: Je ne trouve pas cela dans votre code d'origine, mais c'est exactement ce que je veux dire par «Ceci est principalement utilisé pour faire autre chose avec le modèle avant de l'enregistrer dans la base de données.» Dans ce cas, l'utilisateur ajouté à une relation de l'objet 'map'. –

Questions connexes