gpt4 book ai didi

django - 在模型创建时创建OneToOne实例

转载 作者:行者123 更新时间:2023-12-03 14:32:29 25 4
gpt4 key购买 nike

我正在构建我的第一个Django应用。我有一个用户,该用户有一个收藏夹列表。用户仅具有一个收藏夹列表,并且该列表仅属于该用户。

class User(models.Model):
name = models.CharField(max_length=200)

class FavouriteList(models.Model):
user = models.OneToOneField(User)
favourites = models.ManyToManyField(Favourite, blank=True)

创建新用户时,我要确保该用户具有 FavouriteList。我在Django文档中四处浏览,但运气不太好。

有谁知道在创建模型时如何确保模型具有子对象(例如 FavouriteList)?

最佳答案

完成此操作的最常见方法是使用Django信号系统。您可以在User模型的post_save信号上附加一个信号处理程序(只是某个函数),并在该回调中创建收藏夹列表。

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

@receiver(post_save, sender=User)
def create_favorites(sender, instance, created, **kwargs):
if created:
Favorites.objects.create(user=instance)

以上是从 Django signals docs改编而成的。请务必完整阅读信号文档,因为有一些问题会困扰您,例如信号处理程序代码应该存放在哪里以及如何避免重复的处理程序。

关于django - 在模型创建时创建OneToOne实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5608001/

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