Django接收器列';用户id';不能为空
我正在使用接收器,但我得到以下错误 IntegrityError at/accounts/signup/ (1048,“用户id”列不能为空) 我假设我没有在我自己的receivers.py中正确访问用户。谁能看一下吗 谢谢 receivers.pyDjango接收器列';用户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
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
基本上,问题是在创建对象时需要传递任何必需的字段