Closed amirreza8002 closed 4 months ago
سلام،
عجیب است که من این را ندیده ام یا کسی قبلاً آن را گزارش نکرده است
لطفاً ذکر کن که از کدام نسخه django، django-jalali استفاده می کنی، همچنین کدی برای بازتولید مشکل ارائه دهید.
با تشکر!
سلام، امیدوارم گندکاری من نباشه پس :) https://github.com/amirreza8002/django-med
این کد
django=5.0.7 django-allauth=0.64.6 django-jalali=7.0.0
بقیه پکیج ها رو هم میتونید تو فایل pyproject.yaml ببینید با دستور python manage.py createsuperuser و وارد کردن نام کاربری ارور میده
اگر موقع مایگریت خطا داد flatpages رو از لیست INSTALLED_APPS پاک کنید
دیتابیس روی پستگرس تنظیم شده، برای تغییر django_project/conf/base.py رو ادیت کنید اکه دیتابیس رو عوض کردید و خطا داد فایل مایگریشن رو پاک کنید از اول makemigration
سلام.
من به طور دقیق بررسی نکردم این مشکل رو. به نظرم دلیل مشکل این هست که از jmodels.jDateField
در کاستوم یور مدل استفاده شده. و jmodels.jManager
برای این کار مناسب نیست. چون تابع get_by_natural_key
پیاده سازی نشده در داخل کلاس.
در حالتی که از کاستوم یوزر مدل استفاده میکنیم، برای تغییر دادن منیجیر، کلاس مورد نظر باید از BaseUserManager
ارث بری کنه
به نظر میرسه با تغییر مدل یوزر به کد زیر مشکل بتونه حل بشه
from django.contrib.auth.models import AbstractUser
from django_jalali.db import models as jmodels
from phonenumber_field.modelfields import PhoneNumberField
from django.contrib.auth.base_user import BaseUserManager
class CustomJUserManager(BaseUserManager, jmodels.jManager):
pass
class CustomUser(AbstractUser):
birth = jmodels.jDateField()
phone_number = PhoneNumberField(blank=True, null=True)
objects = CustomJUserManager()
سلام
بله ظاهرا باید این کار رو کرد اما با این فرق که به جای BaseUserManager
باید از
django.contrib.auth.models.UserManager
ارث بری بشه که موقع ساخت superuser به مشکل نخوره
چون متد create_superuser تو این کلاس تعریف شده
سلام آیا لازم هست که منیجر دیفالت
objects
جایگزین بشه؟ به نظرم بهتر میاد که یک اتذبیوت دیگه برای منیجر این پکیج استفاده بشه بعضا به ارور میخوره به عنوان مثال:وقتی که توی UserModel استفاده میشه