0
Пользователь
"""The user model is the default model of django"""
Модель
class UserProfile(models.Model):
# user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
# !!!!!!!!!---here OneToOne Field--!!!!!!!!!!
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True)
description = RichTextField(max_length=140, default='')
avatar = models.CharField(max_length=50, default=_random_avatar, null=True)
home_url = models.URLField(blank=True, null=True)
github_url = models.URLField(blank=True, null=True)
linkedin_url = models.URLField(blank=True, null=True)
stackoverflow_flair = RichTextField(blank=True, null=True)
is_user = models.BooleanField(default=False)
is_public = models.BooleanField(default=False)
Форма
class ProfileForm(ModelForm):
class Meta:
model = UserProfile
fields = '__all__'
Посмотреть
@login_required
def index(request):
""" Notice, the profile.html is composited by 2 sections, user and profile
So, setter and getter all are 2 group, too
"""
info = None
if request.user.is_authenticated:
user = request.user
if request.method == 'POST':
form = ProfileForm(request.POST)
if form.is_valid():
# link to user
form.user = user
form.save() # <------here, can't save the user_id, why?
else:
form = ProfileForm()
# here, queryset allways is null <-------
profile = UserProfile.objects.filter(user_id=user.id)
return render(request, 'account/profile.html', {'user': user, 'profile': profile, 'form': form})
else:
return redirect(reverse('account_login'))
Я стараюсь фи ll информация профиля в виде формы, затем сохранение, но я могу получить новую запись в профиле таблицы, но user_id имеет значение NULL. Я не знаю почему.Нечетный !! Джанго OneToOneField не может сохранить значение внешнего ключа
это работает, спасибо –