当我尝试使用
Table
视图将 create_table
模型提交到数据库时,它抛出一个错误:NOT NULL constraint failed: audioApp_table.user_id
在我自己研究之后我发现这是因为我没有将用户添加到表单,所以我尝试通过添加:table = Table(user=request.user)
来添加它,但它不起作用,我们如何允许用户提交此表单,我知道如何使用class base view
在instance.user = self.request.user
中做到这一点,但是对于function base view
我失败了
def create_table(request):
columns = Column.objects.filter(user=request.user)
fields = {}
for column in columns:
if column.field_type.data_type == 'number':
fields[column.name] = forms.IntegerField()
elif column.field_type.data_type == 'character':
fields[column.name] = forms.CharField(max_length=20)
elif column.field_type.data_type == 'decimal':
fields[column.name] = forms.DecimalField(max_digits=20, decimal_places=10)
elif column.field_type.data_type == 'image':
fields[column.name] = forms.ImageField()
elif column.field_type.data_type == 'boolean':
fields[column.name] = forms.BooleanField()
elif column.field_type.data_type == 'date':
fields[column.name] = forms.DateField()
TableForm = type('TableForm', (forms.Form,), fields)
if request.method == 'POST':
form = TableForm(request.POST, request.FILES)
if form.is_valid():
table = Table()
for column in columns:
setattr(table, column.name, form.cleaned_data[column.name])
table.save()
return redirect('Table')
else:
form = TableForm()
return render (request, 'create_table.html', {'form':form})
class Table(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
number = models.IntegerField(blank=True, null=True)
decimal = models.DecimalField(max_digits=20, decimal_places=10, blank=True, null=True)
image = models.ImageField(upload_to='table-image', blank=True, null=True)
character = models.CharField(max_length=500, blank=True, null=True)
check_box = models.BooleanField(blank=True, null=True)
date = models.DateField(blank=True, null=True)
在将Table实例保存到数据库之前,您需要为Table实例设置用户。您可以通过在 create_table 视图函数中创建表实例后将 table.user 设置为 request.user 来做到这一点
if request.method == 'POST':
form = TableForm(request.POST, request.FILES)
if form.is_valid():
table = Table()
table.user = request.user
for column in columns:
setattr(table, column.name, form.cleaned_data[column.name])
table.save()
return redirect('Table')
else:
form = TableForm()
return render(request, 'create_table.html', {'form': form})
• Python:使用参数主机和用户创建交互式 ssh 会话
• 使用存储在 Google Drive 中的特定命名图像和电子表格中的数据自动填充 Google Docs 文档
• 如何创建允许用户在表单中使用 jquery 进行签名和重置的签名板?
• 如何创建自定义控制器和视图以允许当前登录的 Devise 用户在不提供密码的情况下编辑/更新自定义字段?
• “select”元素发生变化时,如何在javascript中模拟用户点击提交按钮?
• 使用指定的凭据使用 pyodbc 或 pymssql 连接到 Python
• Adobe Experience Manager (AEM) 带表格的动态表单 - 如何允许用户跨表格单元格粘贴数据
• 如何允许用户从一个块中只选择一个 + 和一个 - 选项?
• 如何在用户点击禁用 WRITE_EXTERNAL_STORAGE 权限时调用监听器?
• 对于 React 组件,并使用 jest,我如何验证状态更改是否由 react-google-recaptcha 触发?
• 如何使用 google API for youtube API 来研究一组注册用户的 youtube 活动