NT3*_*3RP 16 django django-models
我正在构建我的第一个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)
Run Code Online (Sandbox Code Playgroud)
创建新用户时,我想确保用户拥有FavouriteList.我在Django文档中查看并且没有太多运气.
有没有人知道如何确保模型FavouriteList在创建时具有子对象(例如)?
sha*_*dfc 34
最常见的方法是使用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)
Run Code Online (Sandbox Code Playgroud)
以上改编自Django信号文档.请务必完全阅读信号文档,因为有一些问题可能会阻碍您,例如信号处理程序代码应该存在的位置以及如何避免重复处理程序.
一种方法是向下一个处理程序注册post_save信号:
def user_save(sender, instance, created, **kwargs):
if created:
FavouriteList.objects.get_or_create(user=instance)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9690 次 |
| 最近记录: |