Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django接收器列';用户id';不能为空_Django_Django Signals - Fatal编程技术网

Django接收器列';用户id';不能为空

Django接收器列';用户id';不能为空,django,django-signals,Django,Django Signals,我正在使用接收器,但我得到以下错误 IntegrityError at/accounts/signup/ (1048,“用户id”列不能为空) 我假设我没有在我自己的receivers.py中正确访问用户。谁能看一下吗 谢谢 receivers.py from django.dispatch import receiver from userena.signals import signup_complete from accounts.models import Account @rece

我正在使用接收器,但我得到以下错误

IntegrityError at/accounts/signup/ (1048,“用户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()
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)
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",])
型号.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()
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)
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",])
userena signals.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()
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)
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",])

您使用的
create
错误,应将值作为参数传递给create

基本上,问题是在创建对象时需要传递任何必需的字段