Как я могу сохранить многие поля в Django? - PullRequest
0 голосов
/ 17 февраля 2012

models.py:

class Tag(models.Model):
    name = models.CharField(max_length=100)
    description = models.CharField(max_length=500, null=True, blank=True)
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now_add=True)

class Post(models.Model):
    user = models.ForeignKey(User)
    tag = models.ManyToManyField(Tag)
    title = models.CharField(max_length=100)
    content = models.TextField()
    created = models.DateTimeField(default=datetime.datetime.now)
    modified = models.DateTimeField(default=datetime.datetime.now)

    def __unicode__(self):
        return '%s,%s' % (self.title,self.content)


class PostModelForm(forms.ModelForm):
    class Meta:
        model = Post


class PostModelFormNormalUser(forms.ModelForm):
    class Meta:
        model = Post
        widgets = { 'tag' : TextInput() }
        exclude = ('user', 'created', 'modified')

    def __init__(self, *args, **kwargs):
        super(PostModelFormNormalUser, self).__init__(*args, **kwargs)      
        self.fields['tag'].help_text = None

что я пробовал в views.py: (это выглядит не так)

    if request.method == 'POST':
        form = PostModelFormNormalUser(request.POST)
        print form
        print form.errors           
        tagstring = form.data['tag']
        splitedtag = tagstring.split()

        if form.is_valid():
            temp = form.save(commit=False)
            temp.user_id = user.id
            temp.save()
            post = Post.objects.get(id=temp.id)

            l = len(splitedtag)         
            for i in range(l):
                obj = Tag(name=splitedtag[i])
                obj.save()
                post.tag.add(obj)

            post = Post.objects.get(id=temp.id)
            return HttpResponseRedirect('/viewpost/' + str(post.id))

    else:
        form = PostModelFormNormalUser()
        context = {'form':form}
        return render_to_response('addpost.html', context, context_instance=RequestContext(request))

Может кто-нибудь опубликовать пример полного редактирования кода, чтобы сохранить его в таблице сообщений, таблице тегов и таблице post_tag?

Форма ввода будет содержать текстовое поле для ввода 'title' и texarea для 'content' и текстовое поле для ввода 'tag' в виде строки. Строка тега отделяется пробелом. Мне нужно сохранить эти слова тега в таблицу тегов и карту в таблице post_tag.

Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 17 февраля 2012

В документации Django относительно ModelForms и save(commit=False) вы найдете информацию о save_m2m () методе Я считаю, что это то, что вы ищете.

2 голосов
/ 17 февраля 2012

Кроме того, если вы используете тегирование, вы можете просто использовать django-tagging или django-taggit

http://code.google.com/p/django-tagging/

http://django -taggit.readthedocs.org / ru / latest / index.html

http://djangopackages.com/grids/g/tagging/

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