그래서 두 개의 다른 앱에서 두 개의 모델을 앱보기 중 하나에 표시하고 싶습니다. 특히 프로필 페이지에 사용자의 소식 피드를 표시하려고합니다. 그러나 나는 그것을 알아낼 수 없었고 내가 발견 한 것은 아무것도 발견하지 못했습니다. 여기 제 코드가 있습니다. 한번보세요.Django,보기에 하나 이상의 모델 표시
피드 응용 프로그램 모델 :
from django.db import models
from django.core.urlresolvers import reverse
from django.conf import settings
from django.contrib.auth import get_user_model
User = get_user_model()
# Create your models here.
class UserPost(models.Model):
author = models.ForeignKey(User,related_name='userpost',null=True)
post_date = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=150,blank=False)
post_body = models.TextField(max_length=1000,blank=False)
def publish(self):
self.save()
def get_absolute_url(self):
return reverse('index')
def __str__(self):
return self.title
당신이 볼 필요가 거라고 확실하지만 여기되지 않음 사용자의 응용 프로그램 모델 :
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from users.choices import *
# Create your models here.
class UserProfileInfo(models.Model):
user = models.OneToOneField(User)
join_date = models.DateTimeField(default=timezone.now)
profile_pic = models.ImageField(upload_to='profile_pics',blank=True)
location = models.CharField(max_length=150)
title = models.CharField(max_length=250)
user_type = models.IntegerField(choices=USER_TYPE_CHOICES,default=1)
website = models.URLField(max_length=100,blank=True)
about = models.TextField(max_length=500,default='about')
twitter = models.CharField(max_length=50,blank=True)
dribbble = models.CharField(max_length=50,blank=True)
github = models.CharField(max_length=50,blank=True)
def __str__(self):
return self.user.username
사용자 응용 프로그램보기 나는 두 모델을 원한다 디스플레이 :
from django.shortcuts import render,get_object_or_404
from users.forms import UserForm,UserProfileForm
from users.models import UserProfileInfo
from feed.models import UserPost
from django.contrib.auth import authenticate,login,logout
from django.http import HttpResponseRedirect, HttpResponse
from django.core.urlresolvers import reverse
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import (TemplateView,ListView,
DetailView,CreateView,
UpdateView,DeleteView)
# Create your views here.
class UserProfileView(DetailView):
model = UserProfileInfo
template = 'users/userprofile.html'
def get_context_data(self, **kwargs):
context = super(UserProfileView, self).get_context_data(**kwargs)
context['user-feed'] = UserPost.objects.all()
return context
사용자의 프로필 템플릿 (I이 사용하려는 템플릿) :
{% extends "base.html" %}
{% block content %}
<div class="sidebar-userinfo">
<img class="profile-pic" src="{{ userprofileinfo.profile_pic.url }}">
<h2>{{ userprofileinfo.username }}</h2>
<p class="accent">Score:</p>
<p>Score goes here</p>
<form>
<button class="btn" type="submit">Follow</button>
</form>
<p class="accent">Title:</p>
<p class="profile-info">{{ userprofileinfo.title }}</p>
<p class="accent">Website:</p>
<p class="profile-info">{{ userprofileinfo.website }}</p>
<p class="accent">I'm a:</p>
{% if request.user.userprofileinfo.user_type == 1 %}
<p class="profile-info">Designer</p>
{% elif request.user.userprofileinfo.user_type == 2 %}
<p class="profile-info">Designer</p>
{% else %}
<p class="profile-info">Both</p>
{% endif %}
{% if userprofileinfo.about %}
<p class="accent">About Me:</p>
<p class="profile-info">{{ userprofileinfo.about }}</p>
{% endif %}
<p class="accent">Member Since:</p>
<p class="profile-info">{{ userprofileinfo.join_date }}</p>
{% if userprofileinfo.location %}
<p class="accent">Location:</p>
<p class="profile-info">{{ userprofileinfo.location }}</p>
{% endif %}
{% if userprofileinfo.twitter %}
<p class="accent">Twitter:</p>
<p class="profile-info">{{ userprofileinfo.twitter }}</p>
{% endif %}
{% if userprofileinfo.dribbble %}
<p class="accent">Dribbble:</p>
<p class="profile-info">{{ userprofileinfo.dribbble }}</p>
{% endif %}
{% if userprofileinfo.github %}
<p class="accent">Git Hub:</p>
<p class="profile-info">{{ userprofileinfo.github }}</p>
{% endif %}
</div>
<div class="content-right">
{% include 'feed/userpost_list_inner.html' %}
</div>
{% endblock %}
포함 문 위의이 파일에 이르게 :
{% for post in userpost_list %}
<div class="post">
<h2 class="post-title">{{ userpost.post.title }}</h2>
<p class="accent">{{ post.author }}</p>
<p class="accent">{{ post.post_date }}</p>
<p class="body">{{ post.post_body }}</p>
</div>
{% endfor %}