2017-10-28 1 views
0

일대일 필드가있는 폼을 저장하려고합니다.Django 일대일 필드가 저장되지 않습니다 (null이 아닌 제약 조건을 위반합니다)

그러나 오류가 계속 발생합니다. "account_id"열의 null 값이 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) 

보기 당신의 도움에 대한

class BankForm(forms.ModelForm): 

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

이 시점에서 계정 개체에 PK가 있습니까? 과제를 보내기 전에 account.pk를 인쇄하고 결과를 얻을 수 있습니까? 귀하의 데이터베이스 엔진이 트랜잭션 주변에서 재미있는 행동을 할 수 있습니다. – fixmycode

+0

'account = Account.objects.create (bank_name = 'xxx') 시도해 주시겠습니까? – Roshan

+0

오류에 대한 전체 스택 추적을 게시하십시오. – solarissmoke

답변

0

덕분에 모든

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}) 

양식.

계정 필드가 아직 설정되지 않은 경우 일대일 필드의 경우 ModelForm을 사용할 수 없음을 알게되었습니다. 해결 방법은 기본 양식을 사용하고 기본 양식의 데이터를 사용하여보기에 계정 및 은행 레코드를 설정하는 것입니다.

관련 문제