CreateView и UpdateView в зависимости от типа представления? - PullRequest
0 голосов
/ 12 июня 2018

У меня есть 2 модели в Джанго, которые связаны отношениями один к одному.Например:

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.,Можно ли отобразить представление для пользователя, даже если у него нет данных профиля, и если да, могут ли они создать данные профиля для себя, а затем вернуться и обновить их?

...