将数据传递到表单 Django

Passing Data into Forms Django

假设;

我有一个简单的系统,在屏幕上有一个选项列表。每个项目都有一个按钮,因此您可以在项目 selected 旁边添加多个补充 items/information,但不能更改项目 selected。 每个项目都有一个唯一的 ID,我想将其传递到表单中,以便评论始终与该项目相关联。 我有一个模型,其中包含一个将评论链接到该项目的外键,并且 Modelform 有效,但我必须 select 从下拉列表中选择该项目,我希望将此信息预先填充到表单中。 这看起来很简单,但我已经绕了好几天了。 任何指针将不胜感激

这是 'comments'

的模型
    class roundscore(models.Model):
    scoreid = models.ForeignKey('Score', on_delete=CASCADE)
    shot_1 = models.IntegerField(default=0, blank=True, null=True)
    shot_2 = models.IntegerField(default=0, blank=True, null=True)
    shot_3 = models.IntegerField(default=0, blank=True, null=True)
    shot_4 = models.IntegerField(default=0, blank=True, null=True)
    shot_5 = models.IntegerField(default=0, blank=True, null=True)
    shot_6 = models.IntegerField(default=0, blank=True, null=True)
    end_1 = models.IntegerField(default=0, blank=True, null=True)
    tens = models.IntegerField(default=0, blank=True, null=True)

这是表格

    class AddRoundScore(forms.ModelForm):
    class Meta:
        model = roundscore
        fields = [
            'shot_1',
            'shot_2',
            'shot_3',
            'shot_4',
            'shot_5',
            'shot_6',
            'end_1',
            'tens',
            'scoreid'
        ]

这是风景

    def addscorecard (request, pk):
    posts = get_object_or_404(Score, pk=pk)
    post = Score.objects.values('id', 'rndname__roundname').filter(id = pk)
    print('Post', post)
    print('Request', type(post))
    if request.method == 'POST':
        form = AddRoundScore(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.scoreid = post
            post.save()
            print('Errors', form.errors.as_data())
            return redirect('readscorecard', post.pk)
    else:
        form = AddRoundScore()
        print('Errors', form.errors.as_data())
        return render(request, 'score/addscorecard.html', {'form': form, 'posts': posts, 'post': post})

scoreid 字段链接到记录分数的 table。 我尝试将 pk 添加到函数中,以便将其传递给分数 ID,而不是在输入镜头值时从列表中挑选它,这可能会导致错误,选择错误的分数 ID。我不能使用与 scoreid 关联的名称,因为如果尝试同一轮,这可能是相同的。 我想要做的就是使用从分数页面上的按钮中获取的值预填充 scoreid 字段

<td><h5><a class="btn btn-outline-dark btn-block" href="{% url 'score:addscorecard' post.id %}">Add Score</a></h5></td>
<td><h5><a class="btn btn-outline-dark btn-block" href="{% url 'score:readscorecard' post.id %}">Read Score</a></h5></td>

为完整起见,这里是 url 文件

     path("addscorecard/<int:pk>", views.addscorecard, name="addscorecard"),

我确信解决方案非常简单,但我无法深入了解它

谢谢

已排序。 小学生错误,模型中的 scoreid 应该是整数字段而不是外键字段。 然后是将视图post.scoreid = post更改为post.scoreid = posts.id 并且有效