Başka bir tabloda bağlantılı bir satır oluşturmak için post_save
sinyalini kullanan bir model dosyanız var. Tipik bir şekilde, @ transaction.atomic ile dekore edilmiş görünümlerimden bir sayfa oluşturabilirim.Django sinyalleri de işlemin içinde yer alır.atomik dekoratör?
Bu dekoratörün, Sayfa nesnesinin ve SharedPage nesnesinin oluşturulmasını aynı işlemde oluşturup koymayacağını bilmek istiyorum. Django dokümanlarından, sinyallerin bu atomik işlemin bir parçası olduğu net değildir.
models.py
class Page(models.Model):
name = models.CharField(default='My default page',max_length=200,blank=False)
created_at = models.DateTimeField(auto_now_add=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
slug = models.SlugField()
uuid = models.UUIDField(default=uuid.uuid4, editable=False)
is_public = models.BooleanField(default=False)
def __str__(self): # __unicode__ on Python 2
return self.name
class Meta:
ordering = ['position','created_at']
@receiver(post_save, sender=Page)
def create_shared_page_entry(sender, instance, created, **kwargs):
if created:
shared_page = SharedPage.objects.create(
page=instance,
user=instance.user,
can_edit=True
)
view.py
@require_http_methods(["POST"])
@transaction.atomic
def page_create(request):
name = request.POST.get('name')
page = Page.objects.create(name=name, owner=request.user)
data = serializers.serialize("json", [page])
return HttpResponse(data, content_type='application/json')