django - 在 Django 表单中,formset_factory 中是否有 initial={'authuser':request.user} 的等价物?
问题描述
[问题的简短版本]
所以到目前为止我一直在使用普通形式。在这种情况下,我使用
form = myForm(initial={'authuser':request.user})
代码来区分用户和其他用户,并让他/她填写自己的表单。(显然,我有authuser
User 模型的外键)。
但是后来我尝试使用inlineformset_factory
这个时间,但无法弄清楚如何使用普通表格完成我所做的事情。对此有何建议?非常感谢。
[问题的加长版]
所以我有以下模型。
class Question(models.Model):
questionNumber = models.IntegerField(primary_key=True)
title = models.CharField(max_length=20, default="")
question = models.CharField(max_length=100, default="")
def __str__(self):
return self.questionNumber
class Answer(models.Model):
authuser = models.ForeignKey(User, on_delete=models.CASCADE, null=True, default=None)
questionTitle = models.ForeignKey(Question, on_delete=models.CASCADE, null=True, default=None)
answer = models.CharField(max_length=500)
dateAnswered = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.questionTitle
我想做的是让用户回答每个问题。但在这里我尝试使用inlineformset_factory
,因为我想让用户随着时间的推移添加他们的答案。所以我相信我将不得不Question
用作父模型和Answer
子模型。
然而问题是,我如何让每个用户填写他/她自己的答案表?在正常形式中,我曾经form = myForm(initial={'authuser':request.user})
获得request.user
's 自己的形式。但我无法弄清楚formset_factory
我非常感谢您的帮助。谢谢。
+++
所以这是我的views.py。我已经initial= ...
按照文档中的说明设置了该部分,但它似乎不起作用。无论我登录哪个帐户,我都会得到相同的表单集,其中保存了所有以前的数据。
def index(request):
today = datetime.today()
AnswerFormSet = modelformset_factory(Answer, form=AnswerForm, extra=1)
formset = AnswerFormSet(initial=[
{
'authuser':request.user
}
])
if request.method == "POST":
formset = AnswerFormSet(request.POST)
if formset.is_valid():
formset.save()
return redirect('index')
return render(request, 'formset/index.html', {'formset':formset})
还有我的模板。
<body>
<div class="row justify-content-center">
<div class="col col-10">
<div class="row justify-content-center">
<div class="col col-12">
<form method="POST">
{% csrf_token %}
{{formset.as_p}}
<input type="submit">
</form>
</div>
</div>
</div>
</div>
</body>
解决方案
推荐阅读
- php - PHP 替代 if (!isset(...)) {...} => GetVar($Variable, $ValueIfNotExists)
- docker - 动态 docker-compose 运行时环境变量
- angular - Angular HttpClient.get 与 Postman
- oracle - 如何从 Oracle 数据库中获取 Jenkins 构建参数?
- javascript - 为什么这段代码中的js事件没有冒泡?
- php - PHP 克隆/复制/将方法从一个对象移动到另一个对象
- swift - 二元运算符“==”不能应用于“NSObject”和“String”类型的操作数
- javascript - Firestore 数组联合
- python - 在 Python 调试器中,如何单步执行第二个方法调用?
- c# - 反序列化数组中的项目时忽略自定义 JsonConverter