انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: 🇮🇷 در 26 تیر 1401، 07:11 ب‌ظ

عنوان: کاربر شخصی‌سازی شده در جنگو (حل شد)
ارسال شده توسط: 🇮🇷 در 26 تیر 1401، 07:11 ب‌ظ
سلام
میخوام یه مدل شخصی‌سازی شده کاربر در یه پروژه جنگو بسازم. هر جایی که دیدم میگن باید قبل از اولین migration پروژه این کار انجام بشه. پروژه من جدید نیست. آیا راهی داره که وسط پروژه مدل کاربر جنگو رو شخصی‌سازی کرد؟
عنوان: پاسخ : کاربر شخصی‌سازی شده در جنگو
ارسال شده توسط: sameet در 26 تیر 1401، 09:39 ب‌ظ
درود !
منظورت از کاربر شخصی سازی شده دقیقا چی هست ؟
عنوان: پاسخ : کاربر شخصی‌سازی شده در جنگو
ارسال شده توسط: M!lad در 26 تیر 1401، 09:50 ب‌ظ
من یک بار قبلا وسط پروژه اینکار رو کردم. سخته کمی. باید جاهای مختلف که از کلاس کاربر به شکل غیر استاندارد استفاده شده تغییر اعمال کنید. شاید اگر کمی بیشتر توضیح بدید چه کار می‌خواید انجام بدید بشه راهکار دیگه‌ای داد. برای مثال اضافه کردن یه جدول Profile عموما می‌تونه تو این جور مواقع کمک کنه.
عنوان: پاسخ : کاربر شخصی‌سازی شده در جنگو
ارسال شده توسط: 🇮🇷 در 26 تیر 1401، 11:49 ب‌ظ
من یک بار قبلا وسط پروژه اینکار رو کردم. سخته کمی. باید جاهای مختلف که از کلاس کاربر به شکل غیر استاندارد استفاده شده تغییر اعمال کنید. شاید اگر کمی بیشتر توضیح بدید چه کار می‌خواید انجام بدید بشه راهکار دیگه‌ای داد.
میخوام کاربر، همون کاربر جنگو باشه فقط یه ویژگی بیشتر داشته باشه.
برای مثال اضافه کردن یه جدول Profile عموما می‌تونه تو این جور مواقع کمک کنه.
میشه بیشتر توضیح بدید؟
عنوان: پاسخ : کاربر شخصی‌سازی شده در جنگو
ارسال شده توسط: M!lad در 27 تیر 1401، 12:56 ق‌ظ
در ابتدا یک نکته اینکه: داکیومنت جنگو پیشنهاد می‌کنه همیشه در ابتدای یک پروژه حتی اگر کلاس کاربر کار شما رو راه می‌اندازه اون رو extend کنید تا در آینده اگر تغییر این چنینی لازم شد بدون مشکل بتونید اون رو اعمال کنید.

برای حل این مسئله می‌تونید یک کلاس پروفایل در نظر بگیرید با ویژگی‌های مورد نظر و یک ارتباط یک به یک با کلاس کاربر بینشون ایجاد کنید. برای مثال اینجا رو ببنید:

https://stackoverflow.com/a/37348787/14017072
عنوان: پاسخ : کاربر شخصی‌سازی شده در جنگو
ارسال شده توسط: sameet در 27 تیر 1401، 12:24 ب‌ظ
نقل‌قول
میخوام کاربر، همون کاربر جنگو باشه فقط یه ویژگی بیشتر داشته باشه.

https://stackoverflow.com/a/6092091https://stackoverflow.com/a/34427137https://stackoverflow.com/a/34427137
عنوان: پاسخ : کاربر شخصی‌سازی شده در جنگو
ارسال شده توسط: 🇮🇷 در 27 تیر 1401، 01:54 ب‌ظ
ممنون از جماب میلاد و سامیت. نگاه میکنم اگر مشکلی بود اطلاع میدم ان شاء الله
عنوان: پاسخ : کاربر شخصی‌سازی شده در جنگو
ارسال شده توسط: 🇮🇷 در 27 تیر 1401، 04:37 ب‌ظ
یه سوال. الآن من مدل Profile رو در اپ users که برای مدیریت کاربرها هست ساختم. این دو خط اول مدل هست:
user = OneToOneField(User, on_delete=models.CASCADE)
ticket = 10
الآن باید چیکار کنم که وقتی یه کاربر ساخته میشه، وقتی به user.profile.ticket کاربر جدید یا کاربرهای قدیمی مراجعه کنم ۱۰ رو ببینم؟ یعنی چطور به این ۱۰ دسترسی داشته باشم؟ به محتوای ذیل که در شل جنگو اتفاق افتادن نگاه کنید:
>>> user = User.objects.get(username="reza")
>>> user.profile
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/reza/.local/lib/python3.10/site-packages/django/db/models/fields/related_descriptors.py", line 461, in __get__
    raise self.RelatedObjectDoesNotExist(
django.contrib.auth.models.User.profile.RelatedObjectDoesNotExist: User has no profile.
عنوان: پاسخ : کاربر شخصی‌سازی شده در جنگو
ارسال شده توسط: M!lad در 27 تیر 1401، 05:09 ب‌ظ
تو همون شل می‌تونید یک bulk_create جهت ایجاد پروفایل برای تمام کاربرانی که از پیش وجود دارند انجام بدید. برای کاربران جدید هم عموما از سیگنال‌ها استفاده می‌شه.
عنوان: پاسخ : کاربر شخصی‌سازی شده در جنگو
ارسال شده توسط: 🇮🇷 در 27 تیر 1401، 07:21 ب‌ظ
تو همون شل می‌تونید یک bulk_create جهت ایجاد پروفایل برای تمام کاربرانی که از پیش وجود دارند انجام بدید. برای کاربران جدید هم عموما از سیگنال‌ها استفاده می‌شه.
خیلی ممنون. درست شد.