根据提交类型创建CreateView和UpdateView?

时间:2018-06-12 15:04:30

标签: python django django-views

我在Django中有两个模型,它们通过一对一的关系连接起来。例如:

class User(AbstractBaseUser):
    username    = models.CharField(max_length=15, unique=True)
    email       = models.EmailField(max_length=100, unique=True)
    date_joined = models.DateTimeField(auto_now_add=True,
                                       null=True)
    bio            = models.CharField(max_length=200, null=True)
    avatar         = models.CharField(max_length=200, null=True)
    profile        = models.OneToOneField(Settings, null=True)


class Profile(models.Model):
    GENDER_CHOICES = (
        ('M', 'Male'),
        ('F', 'Female'),
    )

    bio     = models.CharField(max_length=200, null=True)
    avatar  = models.CharField(max_length=200, null=True)
    gender  = models.CharField(max_length=1, choices=GENDER_CHOICES, null=True)
    dob     = models.DateField(max_length=8, null=True)

每个用户可能都有Profile个详细信息,但有些用户可能没有输入任何信息,因此他们可能还没有提供任何详细信息(0行)。我想要做的是创建一个设置页面,在提交时创建或更新用户个人资料详细信息。基本上这就是我到目前为止所做的:

class ProfileSettings(UpdateView):
    template_name = 'oauth/profile-settings.html'
    form_class = ProfileForm
    model = Profile

    def get_object(self, queryset=None):
        return get_object_or_404(Profile, user=self.request.user)

使用此类视图时,更新在用户具有配置文件详细信息时有效,但是当用户没有配置文件详细信息时,则会显示404错误。是否可以向用户显示视图,即使他没有个人资料详细信息,如果有,他们是否可以为自己创建个人资料详细信息,然后可以返回并更新它们?

0 个答案:

没有答案