سلام خسته نباشید
من برای اینکه مشخصات کامل کاربران رو هنگام ثبت نام دریافت کنم از همون مدل 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
سلام دوست من
زمانی که دارین کاربری رو ثبت میکنین ارور میده چون username تکراری دارین اضافه میکنین
استاد یوزر رو پاک کردم ولی حالا این 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
ارتباط بین جدول user و جدول مورد نظرتون رو به چه صورتی پیاده سازی کردین؟
تصویر مدلتون رو ارسال کنین
این اون مدلی هست که درست کردم
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
جدولی که ایجاد کردین یک foreignkey به جدول user داره و باید مقدار id اون پر بشه
زمانی که قصد دارین یک نمونه از مدل جدید خودتون ایجاد کنین باید مشخص بشه که این مدل برای کدوم کاربر هستش و id کاربر رو باید به مدل بدین
ممنون از راهنماییتون به این صورت شد
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 یوزر رو خالی میزاره
شما دارین id کاربر رو از کاربر جاری میگیرین
اگر قصد ویرایش اطلاعات کاربری رو دارین باید id اون شخص رو در فرم دریافت کرده و به جای user id قرار بدین