我正在创建一个django应用程序,它需要用户和信息记录之间的一对一关系。在
该应用程序允许用户维护有关其组织的单个记录。在
我一直在努力理解如何通过表单输入数据。我尝试过许多不同的方法,但这里是最近的一次尝试。在
用户的工作流是:
数据库中会创建一个空白记录,并且表单会正确生成,但是表单的结果不会保存到数据库中。在
我想让我困惑的是正确地创建记录并通过外键关系存储结果,但是我已经尝试了我能想到的一切。在
非常感谢所有的帮助。在
模型.py
from django.contrib.auth.models import User
class Program(models.Model):
user = models.OneToOneField(User)
unit_name = models.CharField(max_length=50, verbose_name='Name')
...
视图.py:
^{pr2}$更新1:添加html表单和表单.py
html:
^{3}$表单.py
from django import forms
from models import Program
class ProgramForm(forms.ModelForm):
class Meta:
model = Program
fields = '__all__'
更新2:在中添加打印命令视图.py评估表格结果
在中添加了“打印表单”视图.py在“如果”之前表格有效吗():”并且可以在终端中看到结果:
<tr>
<th>
<label for="id_user">User:</label>
</th>
<td>
<ul class="errorlist">
<li>This field is required.</li>
</ul>
<select id="id_user" name="user">
<option value="" selected="selected">---------</option>
<option value="1">twitch</option>
</select>
</td>
</tr>
添加“打印”后获取表格错误“:
<ul class="errorlist"><li>user<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
更新3:为初始表单指定用户:
尝试改变这个:
program_info = ProgramForm(request.POST, instance=record_data, initial={'user': current_user})
但在生成表单时,并没有实际选择字段的“user”值。奇怪的。在
你没有发布整个表单,但是我看到的是,用户没有在表单上显式地选择他们的用户名。因此,您需要确保在保存之前从视图中手动填充该列。在
当然,你可以做的另一件事是模型.py,将字段的可编辑属性设置为False。这就是我为用户OnetoOnes所做的,因为我的期望是,在创建之后,我永远不需要更改用户字段。在
相关问题 更多 >
编程相关推荐