2017-02-24 7 views
0

저는 현재 장고로 소셜 플랫폼을 만들고 있습니다. 지금은 대시 보드를 개발 중이며 최종 사용자가 자신의 게시물을 게시 할 수있게하려고합니다. 포스트 모델양식 제출이 새 게시물 개체를 생성하지 않습니다.

class Post(models.Model): 
    user = models.ForeignKey(User) 
    posted = models.DateTimeField(auto_now_add=True) 
    content = models.CharField(max_length=150) 
    Likes = models.IntegerField(default=0) 

def __str__(self): 
    return self.user.username 

내 양식 :

양식이 제출됩니다
class Post_form(forms.ModelForm): 

    class Meta: 
     model = Post 
     fields = (
      'content', 
      ] 

    def __init__(self, *args, **kwargs): 
     super(Post_form, self).__init__(*args, **kwargs) 
     self.fields['content'].label = "" 
     self.fields['content'].widget.attrs={ 
      'id': 'id_content', 
      'class': 'myCustomClass', 
      'name': 'name_content', 
      'placeholder': 'What are you thinking about?', 
     } 

이 제대로 내용 필드의 값과 POST 요청을 생성이 내 포스트 모델입니다. 내 양식을보기에 저장하면 새 게시물이 생성되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

내 views.py : 당신은 포스트 형태로 인스턴스 매개 변수로 사용자를 통과 할 수

def dashboard_view(request): 
    if request.POST: 
     form = Post_form(data=request.POST, instance=request.user) 
     if form.is_valid(): 
      form.save() // <- no new post gets generated after saving 
      return redirect(reverse('dashboard')) 
     else: 
      return redirect(reverse('settings')) 
    else: 
     form = Post_form 
     gebruikers = User.objects.all() 
     all_posts = Post.objects.all().order_by('-posted') 
     return render(request, 'Dashboard/index.html', {'gebruiker':gebruikers, 'posts':all_posts, 'form': form},) 

답변

1

. 이 인수를 생략하고 save에서 반환 된 실제 Post 인스턴스에 사용자를 지정해야합니다.

form = Post_form(data=request.POST) 
if form.is_valid(): 
    post = form.save(commit=False) 
    post.user = request.user 
    post.save()