что означает эта карта в django - PullRequest
0 голосов
/ 06 апреля 2010

это код:

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.members" ???

map.members.add(request.user)

Ответы [ 2 ]

2 голосов
/ 06 апреля 2010

Я не уверен, , какую карту вы имеете в виду, но если это так:

 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, поскольку вы переопределяете имя функции экземпляром какого-либо объекта.

Подробнее о формах модели .

0 голосов
/ 06 апреля 2010

Не обязательно относится к вашему сообщению, но вы должны знать, что map - это имя функции в стандартной библиотеке python. http://docs.python.org/library/functions.html#map

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...