2014-12-07 66 views
1
class UserProfile(models.Model): 
    user = models.OneToOneField(User, related_name='oser') 
    picture = models.ImageField(upload_to='profile_images', blank=True) 

所以,我添加圖片的用戶配置文件,它的作品不錯,但我不能訪問圖片顯示它在用戶配置文件OnetoOneField連接,無法訪問相關信息,Django的

view.py:

def profile(request): 
if request.user.is_authenticated(): 
    user = User.objects.get_by_natural_key(request.user.get_username()) 
    t = loader.get_template("profile.html") 
    c = Context({'user2': user, }) 
    return HttpResponse(t.render(c)) 
else: 
    raise Http404 

我已經在Django文檔中發現

class Employee(models.Model): 
    user = models.OneToOneField(User) 
    department = models.CharField(max_length=100) 

u = User.objects.get(username='fsmith') 
freds_department = u.employee.department 

然而,這並沒有爲我工作,我只是無法得到UserProfile.picture

u = User.objects.get(username= request.user.get_username()) 
s = u.UserProfile.picture 

我做錯了嗎?

回答

1

您應該使用「相關的名字」,這在外鍵字段中指定,訪問用戶的個人資料,而不是類名:

s = u.oser.picture 

默認情況下「related_name」是相同的相關模型類的名字,但小寫。您指定了related_name =「oser」。