Django一对一字段未保存(违反非空约束)

时间:2017-10-28 01:20:38

标签: django one-to-one

我正在尝试保存具有一对一字段的表单。

然而,它在“account_id”列中不断收到错误 null值违反了非空约束

不确定为什么我无法在一对一字段中保存新帐户对象。

模型

class Account(models.Model):
   name = models.CharField(max_length=30)

class Bank(models.Model):
    account = models.OneToOneField(Account, on_delete=models.CASCADE, primary_key=True)
    bank_name = models.CharField(max_length=30)

查看

def add_bank_view(request):

    if request.method == 'POST':
        form = BankForm(request.POST)
        if form.is_valid():
            account = Account.objects.create(name='xxx')
            bankform = form.save(commit=False)
            bankform.account = account
            bankform.save()
        return HttpResponseRedirect('/add_banks/')
   else:
       form = BankForm()
   return render(request, 'bank/add_bank.html', {'form': form})

表格

class BankForm(forms.ModelForm):

class Meta:
    model = Bank
    fields = ['bank_name']

1 个答案:

答案 0 :(得分:0)

感谢大家的帮助。

我发现如果尚未设置“帐户”字段,则在“一对一”字段的情况下无法使用ModelForm。解决方案是使用基本表单,然后使用基本表单中的数据在您的视图中设置帐户和银行记录。