django - django模型中的自动外键
问题描述
在 Django 中可以做到这一点。我有模型,我希望每个新用户都在模型用户中注册,并在外键注册中的模型客户中自动注册
class Customer(models.Model):
here auto
user = models.ForeignKey(User, on_delete=models.CASCADE)
phone = models.CharField(max_length=11,null=True)
likecus=models.ManyToManyField(smartphone ,verbose_name="b",null=True)
def __str__(self):
return "User: {}, phone: {}".format(self.user, self.phone)
解决方案
你可以用post_save
信号做到这一点。
from django.contrib.auth import get_user_model
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=get_user_model())
def create_customer(sender, instance, created, **kwargs):
if created:
# if your user model has phone, if not remove phone.
Customer.objects.create(user=instance, phone=instance.phone)
或者如果您有自定义用户模型,则使用第二种方法。覆盖save()
方法:
class YourUserModel(...):
...
def save(self,*args,**kwargs):
created = not self.pk
super().save(*args,**kwargs)
if created:
Customer.objects.create(user=self, phone=self.phone)
推荐阅读
- r - R Shiny - 拍摄输出快照以避免递归
- javascript - 元素类型无效:应为字符串或类函数
- woocommerce - 如何禁用 Woocommerce 设置向导?
- typescript - 具有“key”属性的类型和对象
- python - 为什么VSCode Python linter无法解析同一目录中文件的导入?
- datetime - 如何在颤动中将特定的字符串转换为日期时间格式
- c# - 用 Lazy 实现的 ConcurrentDictionary 上的更新方法
不工作 - python - 当他们说出某个命令时,我如何提及成员?
- excel - 大型数据集上多个 SUMIFS 的 Excel VBA
- html - Visualforce / Apex:使用一个控制器访问两个对象