জ্যাঙ্গো পোস্ট সেভ সিগন্যাল ব্যবহার করে যখন কোনও ব্যবহারকারী তৈরি করা হয় তখন আপনি প্রতিটি সময় নতুন এন্ট্রি তৈরি করে কেবল ব্যবহারকারী প্রোফাইল প্রসারিত করতে পারেন
models.py
from django.db.models.signals import *
from __future__ import unicode_literals
class UserProfile(models.Model):
user_name = models.OneToOneField(User, related_name='profile')
city = models.CharField(max_length=100, null=True)
def __unicode__(self): # __str__
return unicode(self.user_name)
def create_user_profile(sender, instance, created, **kwargs):
if created:
userProfile.objects.create(user_name=instance)
post_save.connect(create_user_profile, sender=User)
নতুন ব্যবহারকারী তৈরি হওয়ার পরে এটি স্বয়ংক্রিয়ভাবে কোনও কর্মচারী উদাহরণ তৈরি করবে।
আপনি যদি ব্যবহারকারী মডেলটি প্রসারিত করতে চান এবং কোনও ব্যবহারকারী তৈরি করার সময় আপনি আরও তথ্য যুক্ত করতে চান তবে আপনি জ্যাঙ্গো-বেটারফর্ম ( http://django-betterforms.readthedocs.io/en/latest/m মাল্টিফর্ম html ) ব্যবহার করতে পারেন । এটি ব্যবহারকারীর প্রোফাইলে মডেলটিতে সংজ্ঞাযুক্ত সমস্ত ক্ষেত্র সহ একটি ব্যবহারকারী অ্যাড ফর্ম তৈরি করবে।
models.py
from django.db.models.signals import *
from __future__ import unicode_literals
class UserProfile(models.Model):
user_name = models.OneToOneField(User)
city = models.CharField(max_length=100)
def __unicode__(self): # __str__
return unicode(self.user_name)
forms.py
from django import forms
from django.forms import ModelForm
from betterforms.multiform import MultiModelForm
from django.contrib.auth.forms import UserCreationForm
from .models import *
class ProfileForm(ModelForm):
class Meta:
model = Employee
exclude = ('user_name',)
class addUserMultiForm(MultiModelForm):
form_classes = {
'user':UserCreationForm,
'profile':ProfileForm,
}
views.py
from django.shortcuts import redirect
from .models import *
from .forms import *
from django.views.generic import CreateView
class AddUser(CreateView):
form_class = AddUserMultiForm
template_name = "add-user.html"
success_url = '/your-url-after-user-created'
def form_valid(self, form):
user = form['user'].save()
profile = form['profile'].save(commit=False)
profile.user_name = User.objects.get(username= user.username)
profile.save()
return redirect(self.success_url)
addUser.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="." method="post">
{% csrf_token %}
{{ form }}
<button type="submit">Add</button>
</form>
</body>
</html>
urls.py
from django.conf.urls import url, include
from appName.views import *
urlpatterns = [
url(r'^add-user/$', AddUser.as_view(), name='add-user'),
]