gpt4 book ai didi

python - Django 管理命令并将自定义参数发送到 post_save 信号

转载 作者:太空宇宙 更新时间:2023-11-03 18:04:17 26 4
gpt4 key购买 nike

这是我在 Django 中的第一个项目,我正在尝试通过manage.py 编写一个用户导入脚本作为管理命令的一部分。我遇到了一些麻烦,因为我想从另一个表读取用户数据并根据电子邮件 get_or_create 用户。这是简单的部分。我还有一个用户配置文件模型,用于所有其他“配置文件”数据。

我的问题是,我不确定如何设置信号来接收我的个人资料信息并用数据填充我的个人资料表。我已经到了创建空配置文件行的地步,但我希望填充这些行。谁能告诉我我做错了什么?

到目前为止,我已经引用了这些链接,但没有成功:

Pass additional parameters to post_save signal

https://coderwall.com/p/ktdb3g/django-signals-an-extremely-simplified-explanation-for-beginners

<小时/>

load_users.py

from django.core.management.base import BaseCommand, CommandError
from subscriber_conf.models import ActiveSubscriber
from django.contrib.auth.models import User
from subscriber_conf import signals

import logging

logger = logging.getLogger(__name__)

class Command(BaseCommand):
help = 'Imports user records'

def handle(self, *args, **options):

subscriber = ActiveSubscriber.objects.get(pk=10037)

logger.debug("running user import........")
u = User.objects.create_user(username=subscriber.email, email=subscriber.email,
first_name=subscriber.first_name, last_name=subscriber.last_name,
password='mypass')

#....add more data to send to signal....

signals.py

from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
from subscriber_conf.models import Profile
import logging

logger = logging.getLogger(__name__)

@receiver(post_save, sender=User)
def insert_profile(sender, **kwargs):

logger.debug("Post_save: insert_profile running.......")
instance = kwargs.get('instance')

if created:
Profile.objects.get_or_create(user=instance)

最佳答案

在@Anentropic的帮助下解决了我自己的问题。我只是删除了我的信号代码并将我的个人资料创建添加到管理命令中。简单且按我想要的方式工作。

loadusers.py

from django.core.management.base import BaseCommand, CommandError
from subscriber_conf.models import ActiveSubscriber
from django.contrib.auth.models import User
from subscriber_conf import signals
from subscriber_conf.models import Profile

import logging

logger = logging.getLogger(__name__)

class Command(BaseCommand):
help = 'Imports user records'

def handle(self, *args, **options):

subscriber = ActiveSubscriber.objects.get(pk=10037)

logger.debug("running user import........")
u = User.objects.create_user(username=subscribers.email, email=subscriber.email,
first_name=subscriber.first_name, last_name=subscriber.last_name,
password='KgLTLgLXQM6oXNfEbEfvb8ya')

zippy = all_subscribers.full_zip
tmp_zip = zippy.split("-")
new_zip = tmp_zip[0]

Profile.objects.get_or_create(user=u,
street_address1=subscriber.street_address1, street_address2=subscriber.street_address2,
city=subscriber.city, state=subscriber.state, full_zip=subscriber.full_zip,
zip_code=new_zip, account_updated=1, phone_number=subscriber.phone_number)

关于python - Django 管理命令并将自定义参数发送到 post_save 信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27159090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com