【发布时间】:2023-04-09 00:17:01
【问题描述】:
我遇到的问题是我正在尝试创建一个表单,该表单通过将当前登录的用户 ID 嵌入到 ModelForm 的隐藏字段中来传递它。
我的模特:
class Portfolios(models.Model):
id = models.AutoField(primary_key=True)
port_name = models.CharField(max_length=135, blank=True)
port_type = models.ForeignKey(PortType, null=True, db_column='port_type', blank=True)
user = models.ForeignKey(User)
def __unicode__(self):
return self.port_name;
class Meta:
db_table = u'tbl_portfolios'
我的表格:
class PortfoliosCreateForm(ModelForm):
class Meta:
model = Portfolios;
我的模板:
<form action="" method="post">
{% csrf_token %}
{% for field in form %}
<div class="create_form_field">
{{ field.errors }}
{{ field.label_tag }}: {{ field }}
</div>
{% endfor %}
<input type="submit" value="Create" /></p>
</form>
我使用通用创建视图调用模板:
url(
r'^portfolios/create/$',
'django.views.generic.create_update.create_object',
dict(
form_class=PortfoliosCreateForm,
post_save_redirect='/',
template_name='portfolios/create.html'
)
),
如何最好地将用户 ID 嵌入该表单中,以便传递隐藏字段?还是我应该简单地传入一个虚拟字段并在自定义保存函数中填写值?
编辑:用户模型是内置的 Django 用户模型。
谢谢
【问题讨论】:
-
您使用的是内置的用户模型吗?当您对我说“当前用户 ID”时,这表明您的应用已经以某种方式了解用户,如果是这种情况,在表单上传递它应该是不必要的?
-
我使用的是内置的用户模型,是的。提交表单时,用户必须登录到系统,因此从这个意义上说,应用程序已经知道用户。我不知道在哪里可以检索用户 ID,因此可能会将其保存为记录的一部分。