• 1400/04/23

مشخصات کاربر :

سلام خسته نباشید

من برای اینکه مشخصات کامل کاربران رو هنگام ثبت نام دریافت کنم از همون مدل User استفاده کردم و یک مدل دیگه هم برای مشخصات درست کردم که شماره تلفن و آدرس و ... رو دریافت می کنه 

درون view صفجه ثبت نام به این صورت کد نویسی کردم 

def sign_in_page(request):
    form = SignInForm(request.POST or None)
    context = {
        'form': form
    }
    if form.is_valid():
        user_name = form.cleaned_data.get('user_name')
        first_name = form.cleaned_data.get('first_name')
        last_name = form.cleaned_data.get('last_name')
        email = form.cleaned_data.get('email')
        password = form.cleaned_data.get('password')
        phone_number = form.cleaned_data.get('phone_number')
        address = form.cleand_data.get('address')
        User.objects.create_user(username=user_name, password=password, email=email)
        UserProfile.objects.create(phone_number=phone_number, first_name=first_name, 
                                   last_name=last_name, address=address)

        return redirect('/login')
    return render(request, 'account/signin.html', context)

همه چیز درسته هم فرم ها هم مدل ولی وقتی فرم رو پر می کنم و کلید ارسال رو می زنم این ارور در مرورگر به نمایش در میاد

IntegrityError at /support
UNIQUE constraint failed: auth_user.username
Request Method:	POST
Request URL:	http://127.0.0.1:8000/support
Django Version:	3.2.5
Exception Type:	IntegrityError
Exception Value:	
UNIQUE constraint failed: auth_user.username
Exception Location:	C:\Users\Milad\PycharmProjects\the_wall_of_fame_home_page\venv\lib\site-packages\django\db\backends\sqlite3\base.py, line 423, in execute
Python Executable:	C:\Users\Milad\PycharmProjects\the_wall_of_fame_home_page\venv\Scripts\python.exe
Python Version:	3.9.5
Python Path:	
['C:\\Users\\Milad\\PycharmProjects\\the_wall_of_fame_home_page',
 'C:\\Users\\Milad\\PycharmProjects\\the_wall_of_fame_home_page',
 'C:\\Program Files\\JetBrains\\PyCharm '
 '2021.1\\plugins\\python\\helpers\\pycharm_display',
 'C:\\Program Files\\Python39\\python39.zip',
 'C:\\Program Files\\Python39\\DLLs',
 'C:\\Program Files\\Python39\\lib',
 'C:\\Program Files\\Python39',
 'C:\\Users\\Milad\\PycharmProjects\\the_wall_of_fame_home_page\\venv',
 'C:\\Users\\Milad\\PycharmProjects\\the_wall_of_fame_home_page\\venv\\lib\\site-packages',
 'C:\\Program Files\\JetBrains\\PyCharm '
 '2021.1\\plugins\\python\\helpers\\pycharm_matplotlib_backend']
Server time:	Wed, 14 Jul 2021 12:32:08 +0000
  • 1400/04/27
  • ساعت 10:04

سلام دوست من

زمانی که دارین کاربری رو ثبت میکنین ارور میده چون username تکراری دارین اضافه میکنین


  • 1400/04/27
  • ساعت 16:33

استاد یوزر رو پاک کردم ولی حالا این error میاد با این تفاوت که کاربر به مدل User اضافه میشه ولی مشخصاتش به اون مدلی که خودم ساختم اضافه نمیشه

IntegrityError at /support
NOT NULL constraint failed: main_account_userprofile.user_id
Request Method:	POST
Request URL:	http://127.0.0.1:8000/support
Django Version:	3.2.5
Exception Type:	IntegrityError
Exception Value:	
NOT NULL constraint failed: main_account_userprofile.user_id
Exception Location:	C:\Users\Milad\PycharmProjects\the_wall_of_fame_home_page\venv\lib\site-packages\django\db\backends\sqlite3\base.py, line 423, in execute
Python Executable:	C:\Users\Milad\PycharmProjects\the_wall_of_fame_home_page\venv\Scripts\python.exe
Python Version:	3.9.5
Python Path:	
['C:\\Users\\Milad\\PycharmProjects\\the_wall_of_fame_home_page',
 'C:\\Users\\Milad\\PycharmProjects\\the_wall_of_fame_home_page',
 'C:\\Program Files\\JetBrains\\PyCharm '
 '2021.1\\plugins\\python\\helpers\\pycharm_display',
 'C:\\Program Files\\Python39\\python39.zip',
 'C:\\Program Files\\Python39\\DLLs',
 'C:\\Program Files\\Python39\\lib',
 'C:\\Program Files\\Python39',
 'C:\\Users\\Milad\\PycharmProjects\\the_wall_of_fame_home_page\\venv',
 'C:\\Users\\Milad\\PycharmProjects\\the_wall_of_fame_home_page\\venv\\lib\\site-packages',
 'C:\\Program Files\\JetBrains\\PyCharm '
 '2021.1\\plugins\\python\\helpers\\pycharm_matplotlib_backend']
Server time:	Sun, 18 Jul 2021 12:01:12 +0000

  • 1400/04/28
  • ساعت 09:27

ارتباط بین جدول user و جدول مورد نظرتون رو به چه صورتی پیاده سازی کردین؟

تصویر مدلتون رو ارسال کنین


  • 1400/04/28
  • ساعت 12:24

این اون مدلی هست که درست کردم

class UserProfile(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=120, null=True)
    last_name = models.CharField(max_length=120, null=True)
    email = models.EmailField(null=True)
    phone_number = models.CharField(max_length=15, verbose_name="Phone Number", null=True)
    day = models.IntegerField(null=True)
    month = models.IntegerField(null=True)
    year = models.IntegerField(null=True)
    gender = models.CharField(max_length=20, choices=CHOICES, null=True)
    wallet_receiver = models.CharField(max_length=25, choices=CRYPTO_FIELD, null=True)
    receiver_code = models.CharField(max_length=50, verbose_name="Receiver code", null=True)
    mat = models.CharField(max_length=30, choices=MAT_FIELD, null=True)
    network = models.CharField(max_length=30, choices=NETWORK_FIELD, null=True)

    def __str__(self):
        return self.user.username

  • 1400/04/31
  • ساعت 12:54

جدولی که ایجاد کردین یک foreignkey به جدول user داره و باید مقدار id اون پر بشه

زمانی که قصد دارین یک نمونه از مدل جدید خودتون ایجاد کنین باید مشخص بشه که این مدل برای کدوم کاربر هستش و id کاربر رو باید به مدل بدین


  • 1400/05/01
  • ساعت 22:23

ممنون از راهنماییتون به این صورت شد

def sign_in_page(request):
    form = SignInForm(request.POST or None)
    context = {
        'form': form
    }
    if form.is_valid():
        user_name = form.cleaned_data.get('user_name')
        first_name = form.cleaned_data.get('first_name')
        last_name = form.cleaned_data.get('last_name')
        email = form.cleaned_data.get('email')
        password = form.cleaned_data.get('password')
        phone_number = form.cleaned_data.get('phone_number')
        User.objects.create_user(username=user_name, password=password, email=email)
        UserProfile.objects.create(user_id=request.user.id, phone_number=phone_number, 	       first_name=first_name,
 last_name=last_name)

        return redirect('/login')
    return render(request, 'account/signin.html', context)

تنها مشکل اینجاست که کاربری رو که درون فرم ساختم رو در foreignkey مدل UserProfile نمی زاره  بلکه کاربری که از قبل در ادمین بوده و لاگین بوده رو میزاره وقتی هم در صفحه ادمین لاگین نباشم table یوزر رو خالی میزاره


  • 1400/05/02
  • ساعت 10:00

شما دارین id کاربر رو از کاربر جاری میگیرین

اگر قصد ویرایش اطلاعات کاربری رو دارین باید id اون شخص رو در فرم دریافت کرده و به جای user id قرار بدین


logo-enamadlogo-samandehi