سلام
من میخوام طبق آموزش این سایت و با استفاده از 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()
توی داکیومنت های خود جنگو خوندم که این [email protected]
مشخص میکنه وقتی قرار شد مثلا یه چیزی سیو بشه یه کاری بکنه
اما کد رو که نگاه میکنم از آرگومان ها اصلا چیزی سر در نمیارم
لطفا خیلی جز به جز توضیح بدین قضیه چیه
بعد الآن این یه نمونه کدیه که برای 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
هست سیوش کنه