python - 数据库未使用 django 表单更新

标签 python django django-forms

我正在尝试解决一个新的 django 小项目。

这是我的网址:

url(r'^createreceivable/$',views.createreceivables,name = 'createreceivable'),

我的观点.py

@login_required
def createreceivables(request):
    if request.method == 'POST':
        rec_form = Receivablesforms(data=request.POST)
        if rec_form.is_valid():
            rec_form.save()
            return render(request,'account/dashboard.html')
    else:
        rec_form = Receivablesforms()

    return render(request,'account/addreceivable.html',{'rec_form':rec_form})

我的模型.py

class Receivables(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    receivable_name = models.CharField(max_length=250)
    receivable_address = models.CharField(max_length=250,blank=True)
    receivable_email = models.CharField(max_length=250,blank=True)
    receivable_telephone = models.CharField(max_length=250,blank=True)
    receivable_VAT = models.CharField(max_length=250,blank=True)
    receivable_Service_Tax = models.CharField(max_length=250,blank=True)
    receivable_PAN = models.CharField(max_length=250,blank=True)

表单.py

class Receivablesforms(forms.ModelForm):
    class Meta:
        model = Receivables
        exclude = ('user',)

一切都很完美,除了数据没有保存在数据库中。请指导。

instance=request.user is not working

模板是

<form action="." method="post">
{{ rec_form }}
{% csrf_token %}
<p><input type="submit" value="Save Changes"</p>
</form>

最佳答案

由于您排除了用户,因此您需要以某种方式将其取回,否则您的 rec_form.save() 将会出现异常,因为您的模型需要填充 user 字段.

诀窍是使用save(commit=False)。它将在内存中创建一个对象,但不会保存它。您只需将 user 分配给内存中的对象并再次保存:

if rec_form.is_valid():
    new_rec = rec_form.save(commit=False)
    new_rec.user = request.user
    new_rec.save()

检查 django 文档关于 commit=False in save() method .

关于python - 数据库未使用 django 表单更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36697634/

相关文章:

django - 在删除实例之前使用 DeleteView 进行验证

python - pysvn 1.6.3 可以在 linux 下与 Subversion 1.6 一起工作吗?

python - Pyspark - 在 lambda 中调用函数会导致导入错误

Django:在测试期间如何覆盖日志文件变量?

python - Django 1.8 管理表单 : AttributeError XForm object has no attribute 'save_m2m'

jquery - django:发送 POST 以从可能无限的表单中查看的正确方法

django - 如何在 djangocms 插件中集成 django 应用程序表单

python - NetworkX/Pandas - 无法将节点的度数输出到 .txt 文件中(错误消息)

python - Pip 无法安装 github 包 'python-ldap',需要 C++ 10

python - binascii.Error : Incorrect padding in python django