无法从 Django ModelForm 保存到数据库

杰弗里·尼亚加

没有错误,但表单没有保存到数据库。否则,可以从 django admin 添加数据。

网址和重定向也很好用,我可以打开表单,编辑/放置数据并点击提交,但数据库没有反映。

模型.py

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save

class RPAS(models.Model):
    user = models.OneToOneField(User)
    manufacturer = models.CharField(max_length = 100, default = '')
    model_name = models.CharField(max_length = 100, default = '')
    serial_no = models.CharField(max_length = 50, default='')
    reg_mark = models.CharField(max_length = 50, default='')

    def __str__(self):
        return self.user.rpas.manufacturer

# RPAS.profile = property(lambda u: RPAS.objects.get_or_create(user=u)[0])

def edit_rpas_profile(sender, **kwargs):
    if kwargs['created']:
        user_profile = RPAS(user=kwargs['instance'])

post_save.connect(edit_rpas_profile, sender=User)

视图.py

from .forms import RPASForm
from django.contrib.auth.models import User
from django.core.exceptions import PermissionDenied

def edit_rpas(request):
        if request.user.is_authenticated():
            if request.method == "POST":
                form = RPASForm(request.POST,instance=request.user)
                if form.is_valid():
                    form.save(commit=False)
                    return redirect ('/account/rpas/')

            else:
                form = RPASForm(instance=request.user)
                args = {'form': form}
                return render(request, "accounts/edit_rpas.html", args)
        else:
            raise PermissionDenied

表格.py

from django import forms
from django.contrib.auth.models import User

from django.forms import ModelForm
from accounts.models import RPAS

class RPASForm(ModelForm):
    class Meta:
        model = RPAS
        fields = (
        'manufacturer',
        'model_name',
        'serial_no'
        )

模板

<form action="." method="POST" class="padding">
            {% csrf_token %}

            {{ form.as_p }}

            <input type="submit" value="Submit">

</form>

最后这是我的 admin.py

from .models import RPAS
class RpasAdmin(admin.ModelAdmin):
    list_display = ('manufacturer','model_name','reg_mark','serial_no')

    def user_info(self, obj):
        return obj.description

admin.site.register(RPAS, RpasAdmin)
阿拉斯代尔

您使用 保存commit=False,因此实例永远不会保存到数据库中。去掉它。您还应该传入RPAS实例,而不是User,因为表单是用于RPAS模型的。

if request.method == "POST":
    form = RPASForm(request.POST,instance=request.user.rpas)
    if form.is_valid():
        form.save()
        return redirect ('/account/rpas/')
else:
    form = RPASForm(instance=request.user.rpas)

您只需要commit=False在保存前编辑对象,例如设置user字段。在这种情况下,您不需要这样做,因为该user字段已经设置。

if form.is_valid():
    instance = form.save(commit=False)
    instance.user = request.user
    instance.save()
    return redirect ('/account/rpas/')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django,保存ModelForm

来自分类Dev

Django:无法将空的表单字段保存到数据库-以10为底的int()的无效文字:''

来自分类Dev

Django ModelForm不保存数据

来自分类Dev

servlet无法保存到数据库

来自分类Dev

Django:无法保存到数据库

来自分类Dev

django无法在数据库中保存表单

来自分类Dev

创建无法保存到数据库的Django演示用户

来自分类Dev

Django ModelForm无法捕获上传的图像

来自分类Dev

用户ModelForm未保存在数据库中(Django)

来自分类Dev

Django ModelForm不保存

来自分类Dev

Django无法使用ModelForm提交表单

来自分类Dev

无法保存来自ModelForm的图像

来自分类Dev

save()方法不会将表单数据保存到数据库(Django ModelForm)

来自分类Dev

Django ModelForm提交到数据库

来自分类Dev

Django ModelForm没有将数据保存到数据库

来自分类Dev

无法在Django 1.5上实例化ModelForm

来自分类Dev

CakePHP无法将数据保存到数据库

来自分类Dev

Django ModelForm不保存数据

来自分类Dev

Django ModelForm无法保存

来自分类Dev

Django:无法保存到数据库

来自分类Dev

指定Django ModelForm实例的数据库

来自分类Dev

无法使Django ModelForm进入模态

来自分类Dev

Django:保存到数据库connundrun

来自分类Dev

Django模型无法实时将数据持久保存到数据库

来自分类Dev

数据无法保存到数据库(Spring MVC + Thymeleaf)

来自分类Dev

Django - 无法加载保存到数据库的图像

来自分类Dev

Django 图像字段无法通过 ModelForm 分配

来自分类Dev

无法使用 django 将图像保存到数据库

来自分类Dev

为什么我无法保存 Django ModelForm 博客的编辑?