这个'地图'是什么意思......在django

时间:2010-04-06 06:29:44

标签: django forms

这是代码:

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)

并且map_form是:

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')

我想知道:'map'用于什么?

更新

'map.members'是什么意思???

map.members.add(request.user)

2 个答案:

答案 0 :(得分:2)

我不确定哪个映射您的确切含义,但如果是这样的话:

 map = map_form.save(commit=False)

然后它只是一个名为map的变量,它包含Map模型/类的实例。无论何时保存模型表单,都会得到相应模型的实例 使用commit=False明确说明此实例应保存到数据库中(现在)。在将模型保存到数据库之前,这主要用于对模型执行其他操作。引用您的问题:当前用户与新创建的map实例相关。由于必须在视图中完成(要访问包含用户的请求),首先不保存实例,添加用户,然后保存实例。
因此,如果要保存此实例,则必须手动调用此实例上的save()方法:

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

但我不会将变量命名为map,因为Python有一个名为map()的内置函数。如果您稍后在代码中尝试调用此函数,则可能会引发TypeError,因为您使用某个对象的实例覆盖函数名称。

详细了解model forms

答案 1 :(得分:0)

必然与您的帖子无关,但您应该知道map是python标准库中的函数名称。 http://docs.python.org/library/functions.html#map