如何将故事作者姓名与request.user关联?

2024-04-19 12:38:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我的第一个问题是,一旦我保存了一个故事,story.author将不会与request.user关联

所以它带来了另一个问题,我必须从用户列表中添加故事作者,然后手动为故事选择作者

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})

Tags: selfformtruemodelreturnmodelsrequestdef
1条回答
网友
1楼 · 发布于 2024-04-19 12:38:39

您的StoryAuthor模型强制您在必要时按照以下方式创建适当的实例:

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

请参阅^{}上的文档

相关问题 更多 >