Я создаю форму, где пользователи могут регистрировать дополнительных пользователей, и мне нужно автоматически передать внешний ключ (организацию) текущего пользователя новому создаваемому пользователю.
Я относительно новичок в Django, но я думаю, что проблема в следующей строке в формах:
"user.organization = self.instance.organization"
Модель
class Organization(models.Model):
name = models.CharField(max_length=255)
address = models.CharField(max_length=255)
city = models.CharField(max_length=255)
state = models.CharField(max_length=255)
zip = models.CharField(max_length=255)
class User(AbstractUser):
username = None
email = models.EmailField(_('email address'), unique=True)
organization = models.ForeignKey(Organization, on_delete=models.CASCADE, blank=True, null=True)
client = models.ForeignKey(Client, on_delete=models.CASCADE, blank=True, null=True)
user_type = models.CharField(max_length=255, choices=(('org_admin', 'Admin'),('org_user','User'),('client_admin','Client Admin'),('client_user','Client User')))
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = UserManager()
View
def register(request):
if request.method == 'POST':
form = UserOrgCreationForm(request.POST)
if form.is_valid():
form.save()
email = form.cleaned_data.get('email')
messages.success(request, f'User has been created')
# return redirect('login')
else:
form = UserOrgCreationForm()
return render(request, 'users/register.html', {'form': form})
Форма
class UserOrgCreationForm(UserCreationForm):
password1 = None
password2 = None
class Meta:
model = User
fields = ('email', 'first_name', 'last_name', 'user_type')
def save(self, commit=True):
user = super(UserCreationForm, self).save(commit=False)
user.set_unusable_password()
user.organization = self.instance.organization
if commit:
user.save()
return user
Мне нужен новый пользователь, чтобы унаследовать организацию текущего пользователя.