2015-10-20 82 views
-1

所以我有這種情況。如何在Django的UserProfile中查看(相同的)用戶數據

-models.py

from django.db import models 
from django.utils import timezone 
from autoslug import AutoSlugField 
from django.contrib.auth.models import User 

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    website = models.URLField(blank=True) 
    picture = models.ImageField(upload_to='profile_images', blank=True) 

    def __unicode__(self): 
     return self.user.username 

-forms.py

from django import forms 
from django.forms import ModelForm 
from tentagarden.models import UserProfile 
from django.contrib.auth.models import User 
from parsley.decorators import parsleyfy 

@parsleyfy 
class UserForm(forms.ModelForm): 
    password = forms.CharField(widget=forms.PasswordInput()) 

    class Meta: 
     model = User 
     fields = ('username', 'first_name', 'last_name', 'email', 'password') 

class UserProfileForm(forms.ModelForm): 
    class Meta: 
     model = UserProfile 
     fields = ('website', 'picture') 

-views.py

from django.shortcuts import render_to_response, render, redirect 
from django.template import RequestContext 
from django.http import HttpResponseRedirect, HttpResponse 
from django.core.urlresolvers import reverse 
from django.contrib.auth import authenticate, login, logout 
from django.contrib.auth.decorators import login_required 

from tentagarden.forms import UserForm, UserProfileForm 

def home(request): 
    context = RequestContext(request) 

    registered = False 

    if request.method == 'POST': 
     user_form = UserForm(data=request.POST) 
     profile_form = UserProfileForm(data=request.POST) 

     if user_form.is_valid() and profile_form.is_valid(): 
      user = user_form.save() 

      user.set_password(user.password) 
      user.save() 

      profile = profile_form.save(commit=False) 
      profile.user = user 

      if 'picture' in request.FILES: 
       profile.picture = request.FILES['picture'] 

      profile.save() 

      registered = True 

     else: 
      print user_form.errors, profile_form.errors 

    else: 
     user_form = UserForm() 
     profile_form = UserProfileForm() 

    return render_to_response(
      'tentagarden/home.html', 
      {'user_form': user_form, 'profile_form': profile_form, 'registered': registered}, 
      context) 

-admin.py

from django.contrib import admin 
from .models import File, Post, UserProfile 

admin.site.register(File) 
admin.site.register(Post) 
admin.site.register(UserProfile) 

我想在「用戶配置文件」(管理頁面)中顯示用戶數據(所以名字,姓氏和電子郵件地址),而不是在「用戶」中。
我該怎麼辦?

謝謝!

+0

爲什麼你發佈所有這些代碼,如果你只是對管理員感興趣?爲什麼你沒有發佈實際相關的代碼admin.py? –

+0

由於我是一個noob,現在我要發佈它,對不起: - \ –

+0

您的意思是「用戶配置文件」(在管理頁面中)中可視化的內容,而不是僅限於「用戶」中的內容?你想要3個單獨的列 –

回答

1

把這個在你的admin.py

class UserProfileAdmin(admin.ModelAdmin): 
    list_display = ('email', 'first_name', 'last_name', 'website') 
    search_fields = ('user__username', 'user__first_name', 'user__last_name', 'user__email') 
    # list_filter = ('some_field_to_filter') 
    readonly_fields = ('email', 'first_name', 'last_name') 

    def email(self, obj): 
     return obj.user.email 
    def first_name(self, obj): 
     return obj.user.first_name 
    def last_name(self, obj): 
     return obj.user.last_name 

admin.site.register(UserProfile, UserProfileAdmin) 

使用fieldsets控制在編輯視圖中顯示的字段的順序。

+0

這幾乎是完美的,謝謝! 剩下的唯一剩下的事情就是當我點擊查看用戶的詳細信息時,我還想查看電子郵件,名字和姓氏字段。那可能嗎? –

+0

你的意思是在編輯視圖中?你在哪裏獲得個人資料的所有細節? –

+0

更新了答案。 –

相關問題