为什么我不能将自定义字段保存到另一个 table?

Why can't I save a custom field to another table?

我正在尝试学习本教程:https://simpleisbetterthancomplex.com/tutorial/2018/01/18/how-to-implement-multiple-user-types-with-django.html 关于如何在 Django 中处理多种用户类型。在根据我的需要调整它时,我很难让用户输入品牌字段以保存到供应商 table。使用我当前的 forms.py 代码,每个新用户都有一个空的“品牌”字段,因此无法正确保存。

class VendorSignUpForm(UserCreationForm):
    
    """Add brand name field to default vendor sign up."""
    
    brand = forms.CharField(required = True)
    
    class Meta(UserCreationForm.Meta):
        """Signup redef'd user."""
        model = User
        
    @transaction.atomic
    def save(self):
        """
            Atomically save user as vendor.
        """
        user = super().save(commit = False)
        user.is_vendor = True
        user.save()
        #make sure brand data saved by adding entry:
        vendor = Vendor.objects.create(user = user)
        vendor.brand = self.cleaned_data.get('brand')
        return user

在研究了有关在 Django 中创建新对象并为自己进行测试后,我找到了答案。不确定教程为何有效,但我必须将“品牌”字段传递给 create() 方法。

class VendorSignUpForm(UserCreationForm):
    
    """Add brand name field to default vendor sign up."""
    
    brand = forms.CharField(required = True)
    
    class Meta(UserCreationForm.Meta):
        """Signup redef'd user."""
        model = User
        
    @transaction.atomic
    def save(self):
        """
            Atomically save user as vendor.
        """
        user = super().save(commit = False)
        user.is_vendor = True
        user.save()
        #make sure brand data saved by adding entry: 
        vendor = Vendor.objects.create(user = user, brand = self.cleaned_data['brand'])
        #vendor.brand = "test" #self.cleaned_data['brand'] #.get('brand')
        return user

将字段分配给现有的数据库条目不会改变任何内容(我之前就是这样做的)。