Django - Overriding the Model.create() method?

后端 未结 7 957
忘了有多久
忘了有多久 2020-12-04 08:36

The Django docs only list examples for overriding save() and delete(). However, I\'d like to define some extra processing for my models onl

7条回答
  •  自闭症患者
    2020-12-04 09:34

    an example of how to create a post_save signal (from http://djangosnippets.org/snippets/500/)

    from django.db.models.signals import post_save
    from django.dispatch import receiver
    
    @receiver(post_save, sender=User)
    def create_profile(sender, instance, created, **kwargs):
        """Create a matching profile whenever a user object is created."""
        if created: 
            profile, new = UserProfile.objects.get_or_create(user=instance)
    

    here is a thoughtful discussion on whether it's best to use signals or custom save methods https://web.archive.org/web/20120815022107/http://www.martin-geber.com/thought/2007/10/29/django-signals-vs-custom-save-method/

    In my opinion using signals for this task is more robust, easier to read but lengthier.

提交回复
热议问题