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