1

так я работал над расширением Джанго пользовательской модели following this tutorialкак я могу отображать расширенные данные пользователя на профиль странице Джанго

и после нескольких проб и ошибок я закончил его, но я не могу показаться, чтобы найти способ, чтобы показать расширенные данные по профилю

profile.html

<h2> {{user.first_name}} </h2> 
    <h2> {{user.last_name}} </h2> 
    <h2> {{user.email} </h2> 
    <h2> {{user.website} </h2> 
    <h2> {{user.bio} </h2> 
    <h2> {{user.phone} </h2> 
    <h2> {{user.city} </h2> 
    <h2> {{user.country} </h2> 


</div> 

view.py

@login_required() # only logged in users should access this 
def edit_user(request, pk): 
    # querying the User object with pk from url 
    user = User.objects.get(pk=pk) 

    # prepopulate UserProfileForm with retrieved user values from above. 
    user_form = UserForm(instance=user) 

    # The sorcery begins from here, see explanation below 
    ProfileInlineFormset = inlineformset_factory(User, UserProfile, fields=('website', 'bio', 'phone', 'city', 'country', 'organization')) 
    formset = ProfileInlineFormset(instance=user) 

    if request.user.is_authenticated() and request.user.id == user.id: 
     if request.method == "POST": 
      user_form = UserForm(request.POST, request.FILES, instance=user) 
      formset = ProfileInlineFormset(request.POST, request.FILES, instance=user) 

      if user_form.is_valid(): 
       created_user = user_form.save(commit=False) 
       formset = ProfileInlineFormset(request.POST, request.FILES, instance=created_user) 

       if formset.is_valid(): 
        created_user.save() 
        formset.save() 
        return HttpResponseRedirect('/accounts/profile/') 

     return render(request, "account/account_update.html", { 
      "noodle": pk, 
      "noodle_form": user_form, 
      "formset": formset, 
     }) 
    else: 

     raise PermissionDenied 

URLs

url(r'^admin/', admin.site.urls), 
    url(r'^$', main_views.home, name='home'), 
    url(r'^accounts/profile/$', main_views.uprofile, name='uprofile'), 
    url(r'^accounts/update/(?P<pk>\d+)/', User_Profile_views.edit_user, name='edit_user'), 
    url(r'^accounts/', include('allauth.urls')), 

модели

class UserProfile(models.Model): 
    user = models.OneToOneField(User, related_name='user') 
    website = models.URLField(default='', blank=True) 
    bio = models.TextField(default='', blank=True) 
    phone = models.CharField(max_length=20, blank=True, default='') 
    city = models.CharField(max_length=100, default='', blank=True) 
    country = models.CharField(max_length=100, default='', blank=True) 
    organization = models.CharField(max_length=100, default='', blank=True) 




def create_profile(sender, **kwargs): 
    user = kwargs["instance"] 
    if kwargs["created"]: 
     user_profile = UserProfile(user=user) 
     user_profile.save() 
post_save.connect(create_profile, sender=User) 

все работает нормально, но я не могу найти способ, чтобы отобразить расширенные данные, созданные в модели UserProfile

ответ

0

Вы должны охватывать через отношения, например, так:

<h2> {{user.user.bio}} </h2> 
    <h2> {{user.user.phone}} </h2> 
    <h2> {{user.user.city}} </h2> 
    <h2> {{user.user.country}} </h2> 

Обратите внимание, что это будет следующее, если вы не имеете related_name='user':

 <h2> {{user.userprofile.bio}} </h2> 
     <h2> {{user.userprofile.phone}} </h2> 
     <h2> {{user.userprofile.city}} </h2> 
     <h2> {{user.userprofile.country}} </h2> 
+1

, который работал на меня, спасибо, я пробовал использовать userprofile.bio и user.userprofile.bio раньше, но это не сработало, и я не знал, почему до сих пор. – LeLouch

0

Похоже, что вы пропали без вести второй '}' в ваших расширенных переменных шаблона данных.

Try:

<h2> {{user.first_name}} </h2> 
<h2> {{user.last_name}} </h2> 
<h2> {{user.email}} </h2> 
<h2> {{user.website}} </h2> 
<h2> {{user.bio}} </h2> 
<h2> {{user.phone}} </h2> 
<h2> {{user.city}} </h2> 
<h2> {{user.country}} </h2> 
+0

спасибо, что показал, что я забыл исправить это до публикации, так как я пробовал несколько комбинаций – LeLouch