2017-11-08 5 views
0

私の最初の問題は、ストーリーを保存すると、story.authorはrequest.userに関連付けられません。story_author nameをrequest.userに関連付けるにはどうすればよいですか?

それで別の問題が発生しました。ユーザリストからstory_authorを追加してから、ストーリーの作者を手動で選択する必要があります。必要に応じて、次のラインに沿って適切なインスタンスを作成するための

Here is my damin looks like

models.py

class StoryAuthor(models.Model): 
""" 
Model representing a author. 
""" 
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) 

def get_absolute_url(self): 
    """ 
    Returns the url to access a particular story_author instance. 
    """ 

    return reverse('stories_by_author', args=[str(self.id)]) 

def __str__(self): 
    """ 
    String for representing the Model object. 
    """ 
    return self.user.username 

class Story(models.Model): 
    author = models.ForeignKey(StoryAuthor,related_name='stories',null=True) 

    sb_thing = models.CharField(max_length=30,null=True) 
    sb_story = models.CharField(max_length=30,null=True) 
    sb_name = models.CharField(max_length=30,null=True) 

views.py

def story_new(request): 
    if request.method == "POST": 
     form = StoryForm(request.POST) 
     #form.StoryAuthor = request.user 
     if form.is_valid(): 
      story = form.save(commit=False) 
      StoryAuthor = request.user 
      story.published_date = timezone.now() 
      story.save() 
      return redirect('story_detail', pk=story.pk) 
     else: 
      form = StoryForm() 
      return render(request, 'story/story_create.html', {'form': form}) 
+3

実際に 'StoryAuthor'モデルのポイントは何ですか? 'Story.author'を' User'への外部キーにするのはなぜですか? –

答えて

2

あなたStoryAuthorモデル軍:

if form.is_valid(): 
    story = form.save(commit=False) 
    story.author, _ = StoryAuthor.objects.get_or_create(user=request.user) 
    # ... 
    story.save() 

get_or_createのドキュメントを参照してください。

+0

これは完璧に動作します、ありがとうございます! –

関連する問題