如何保存模型中表单字段的数据,与从AbstractUs继承的模型有一对一的关系

2024-10-02 04:21:19 发布

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

我有一个名为org model的ScrummyUser字段,有一个名为User的一对一字段,该字段继承自AbstractUser模型,如何将表单字段中的数据保存到ScrummyUser模型中

这就是组织模式

class Organization(models.Model):
    organization = models.CharField(max_length=255, null=True)

    def __str__(self):
        return self.organization

这是ScrummyUser模型

class ScrummyUser(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True, related_name='scrummy_profile')

    role= models.CharField(max_length=100, choices=role, blank=True, null=True, default='DEV')
    org = models.ForeignKey(Organization, max_length=255, on_delete=models.CASCADE, default=1)

这是检查表

class ScrummySignUpForm(UserCreationForm):

    role = forms.ChoiceField(choices=role, required=False)
    org = forms.ModelChoiceField(
        queryset=Organization.objects.all(),
        widget=forms.Select
    )

    class Meta(UserCreationForm.Meta):
        model = User
        fields = ['first_name', 'last_name','username' ,'email']

    @transaction.atomic
    def save(self):
        user = super().save(commit=False)
        user.is_user = True
        user.save()
        scrummy = ScrummyUser.objects.create(user=user, role=role)

        return user

它给了我这个错误信息

 scrummy = ScrummyUser.objects.create(user=user, role=role, org=org)
NameError: name 'org' is not defined

这是显而易见的,但我正在寻找另一种方法来保存数据


Tags: nameorg模型selftruemodelslengthmax
2条回答

好的,所以我明白了这一点,在将变量org定义为modelchoicefield之后,我将它作为用户表单字段传递给用户模型的字段,然后将其保存到scrummyuser模型中

对于带有摘要的访问CutomUser,您应该获得settings的用户:

from django.conf import settings
class ScrummyUser(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, 
       primary_key=True, related_name='scrummy_profile')

AbstractUser link

相关问题 更多 >

    热门问题