2012-02-17 29 views
0

models.py:如何在django中保存多個文件?

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表?

輸入表單將包含一個文本框,用於爲'content'鍵入'title'和texarea,以及一個用於鍵入'tag'作爲字符串的文本框。標籤字符串由空格分隔。我需要將這些標記字保存到標記表中並映射到post_tag表中。

我該怎麼做?

回答

3

在關於ModelForms和save(commit=False)的Django文檔中,您可以找到有關save_m2m() method的信息。我相信這就是你要找的。

+0

'save_m2m()'贏沒有工作,因爲它預計