2016-05-16 7 views
0

この問題の回答を検索しましたが、ログインしたユーザーのIDを取得する方法はたくさんあります。テンプレートに必要なのは{{user.id }}。 {{item.author}}フォーラムに投稿用の著者名があります。この著者はログインしているユーザーではありません。 ビュー内でクエリを実行しなくても、作成者のIDを取得することはできますか?Djangoは現在のユーザーではないユーザーのIDを取得します

トピックモデルとユーザーモデルを関連付けるために外部キーを使用しようとしましたが、これはトピックと投稿が一緒に保存されているフォームに問題が生じています。私はインスタンスをcotrrectly作成していません。ここで私は仕事を得ることができないビュー、

def topic_form(request): 
    if request.method == "POST": 
     userInstance = get_object_or_404(User, username = request.user) 
     Tform = TopicForm(request.POST) 
     Pform = PostForm(request.POST, instance=userInstance) 
     if Tform.is_valid() and Pform.is_valid(): 
      tform = Tform.save(commit=False) 
      tform.topicAuthor = request.user 
      tform.author = userInst #this needs to be a user instance 
      tform.save() #returns request and id 
      pform = Pform.save(commit=False) 
      pform.topic = tform 
      pform.author = request.user 
      pform.pub_date = timezone.now() 
      pform.save() 
      return redirect('init') 
    else: 
     topicform = TopicForm() 
     postform = PostForm() 
    return render(request, 'new_topic.html', {'topicform': topicform, 'postform': postform}) 

これらは、モデル

class TopicModel(models.Model): 
    topic = models.CharField(max_length = 100) 
    topicAuthor = models.CharField(max_length = 100) 
    author = models.ForeignKey(User, related_name = 'id_of_author') 
    views = models.PositiveIntegerField(default = 0) 

    def __str__(self):    # __unicode__ on Python 2 
      return self.topic 

class PostModel(models.Model): 
    post = HTMLField(blank = True, max_length = 1000) 
    pub_date = models.DateTimeField('date published') 
    author = models.CharField(max_length = 30) 
    topic = models.ForeignKey(TopicModel, related_name = 'posts') 

    def __str__(self):    # __unicode__ on Python 2 
      return self.post 

答えて

2

私は著者は、ユーザーとの関係を持っていると仮定していされています。

{{item.author.user.id}} 
+0

これらは関連していません。著者からユーザーまで外部キーを作成していたため、これが可能かどうかを確認したいと思っていましたが、フォームからPOSTデータを保存すると、ビューにあらゆる種類の問題が発生します。上記の元の質問を更新して、この問題をどのように解決しようとしたかを示しました。 –

関連する問題