djanguseren中的多个用户配置文件

2024-10-03 06:26:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图为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

^{pr2}$

Tags: frompyimportselffieldgetreturnis
1条回答
网友
1楼 · 发布于 2024-10-03 06:26:45

这个周末我也遇到了同样的问题。尝试使用保存功能

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

   return new_user

相关问题 更多 >