2013-04-02 84 views
0

我使用userena接收器,但我發現了以下錯誤......Django的接收者欄「user_ID的」不能爲空

IntegrityError在/帳號/註冊/ (1048,「列‘USER_ID’不能爲空「)

我假設我沒有在我自己的receivers.py中正確訪問用戶。有人可以看看嗎?

感謝

receivers.py

from django.dispatch import receiver 
from userena.signals import signup_complete 

from accounts.models import Account 

@receiver(signup_complete) 
def handle_signup_complete(user, **kwargs): 
    try: 
     account = Account.objects.get(user=user) 
    except Account.DoesNotExist: 
     account = Account.objects.create() 
     account.credit_limit = 0 
     account.balance = 0 
     account.user = user 
     account.save() 

models.py

class Account(models.Model): 

    OPEN, FROZEN, CLOSED = 'Open', 'Frozen', 'Closed' 
    status = models.CharField(max_length=32, default=OPEN) 
    credit_limit = models.DecimalField(max_digits=10, decimal_places=1, 
             null=True, blank=True) 
    # For performance, we keep a cached balance 
    balance = models.DecimalField(max_digits=10, decimal_places=1, 
            null=True, blank=True) 
    #FK 
    user = models.OneToOneField(User) 

userena signals.py

from django.dispatch import Signal 

signup_complete = Signal(providing_args=["user",]) 
activation_complete = Signal(providing_args=["user",]) 
confirmation_complete = Signal(providing_args=["user","old_email"]) 
password_complete = Signal(providing_args=["user",]) 

回答

1

您正在使用create錯誤,您應該傳遞值作爲參數來創建。 https://docs.djangoproject.com/en/1.5/ref/models/querysets/#django.db.models.query.QuerySet.create

@receiver(signup_complete) 
def handle_signup_complete(user, **kwargs): 
    try: 
     account = Account.objects.get(user=user) 
    except Account.DoesNotExist: 
     account = Account.objects.create(
      user=user, 
      credit_limit=0, 
      balance=0, 
     ) 

基本上,問題是,任何所需的字段需要在創建對象時傳遞。

+0

簡單的事情,謝謝你Ngenator – MarkO

相關問題