我在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错误。是否可以向用户显示视图,即使他没有个人资料详细信息,如果有,他们是否可以为自己创建个人资料详细信息,然后可以返回并更新它们?