گسترش مدل User با استفاده از One to One Link

django

#1

سلام
من میخوام طبق آموزش این سایت و با استفاده از One to One Link یوزرم رو گسترش بدم

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

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    bio = models.TextField(max_length=500, blank=True)
    location = models.CharField(max_length=30, blank=True)
    birth_date = models.DateField(null=True, blank=True)

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

@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    instance.profile.save()

دقیقا این تیکه از کد بالا رو نمیفهمم قضیه چیه:

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

@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    instance.profile.save()

توی داکیومنت های خود جنگو خوندم که این receiver@ مشخص میکنه وقتی قرار شد مثلا یه چیزی سیو بشه یه کاری بکنه
اما کد رو که نگاه میکنم از آرگومان ها اصلا چیزی سر در نمیارم
لطفا خیلی جز به جز توضیح بدین قضیه چیه


بعد الآن این یه نمونه کدیه که برای view نوشته:

@login_required
@transaction.atomic
def update_profile(request):
    if request.method == 'POST':
        user_form = UserForm(request.POST, instance=request.user)
        profile_form = ProfileForm(request.POST, instance=request.user.profile)
        if user_form.is_valid() and profile_form.is_valid():
            user_form.save()
            profile_form.save()
            messages.success(request, _('Your profile was successfully updated!'))
            return redirect('settings:profile')
        else:
            messages.error(request, _('Please correct the error below.'))
    else:
        user_form = UserForm(instance=request.user)
        profile_form = ProfileForm(instance=request.user.profile)
    return render(request, 'profiles/profile.html', {
        'user_form': user_form,
        'profile_form': profile_form
    })

حالا اینجا از بالا خط پنجم وقتی فهمیدیم کاربر یه چیزی پست کرده به صفحه چرا باید به آرگومان instance بفرستیم بهش؟
اصلا قضیه این آرگومان چیه؟ قبلا که من کار کرده بودم با یوزر معمولی خود جنگو فقط اطلاعات پست شده رو میفرستادم بعدم میدیم اگه valid هست سیوش کنه


منبع آموزش جنگو