gpt4 book ai didi

python - django-userena 中的多个用户配置文件

转载 作者:太空宇宙 更新时间:2023-11-03 11:55:46 26 4
gpt4 key购买 nike

我正在尝试为 Userena 创建多个配置文件 - 每个用户只能有一种配置文件类型。在其他讨论之后,我正在使用多表继承,但是当我这样做时,我无法将数据保存到派生模型中。一切最终都变成了 CommonProfile,这是不可能/不允许的。示例代码如下:

models.py 中:

# models.py
# This is an example of how i've attempted to get
# multiple user profiles working with Userena
from django.contrib.auth.models import User
from django.db import models
from userena.models import UserenaLanguageBaseProfile

class CommonProfile(UserenaLanguageBaseProfile):
"""Common fields for 2 user profiles: Spam and Eggs"""
user = models.OneToOneField(User)
common_field = models.CharField(max_length=100)

@property
def is_spam(self):
"""Find out if this is a Spam user"""
try:
self.spamprofile
return True
except SpamProfile.DoesNotExist:
return False

def get_real_type(self):
"""return the real model"""
if self.is_spam:
return self.spamprofile
else:
return self.eggsprofile

class SpamProfile(CommonProfile):
spam_field = models.CharField(max_length=20)

class EggsField(CommonProfile):
eggs_field = models.SmallIntegerField()

forms.py

# forms.py
# This is the form to sign up a Spam Type Person

from django import forms
from userena.forms import SignupFormTos
from . models import CommonProfile, SpamProfile

class SpamSignupForm(SignupFormTos):
"""signup a Spam Person"""
common_field = forms.CharField(label='what is your quest')
spam_field = forms.CharField(label='what kind of spam are you')

def clean(self):
cleaned_data = super(SpamSignupForm,self).clean()
#do stuf, same idea for clean_<field>
return cleaned_data

def save(self):
"""Save the SpamProfile"""
user = super(SpamSignupForm,self).save()
common_profile = user.get_profile()
spam_profile = SpamProfile(commonprofile_ptr=common_profile)
spam_profile.spam_field = self.cleaned_data['spam_field']
spam_profile.save()
return spam_profile

最佳答案

这个周末我遇到了同样的问题。试试你的保存功能

def save:
#your other code
spam_field = self.cleaned_data['spam_field']
new_spam_user = SpamProfile.objects.create_user(spam_field)

return new_user

关于python - django-userena 中的多个用户配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10778980/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com