例如我的專案有個blog app,設定成了單獨的資料庫blog_db,blog有點贊,評論功能,并且外鍵關聯了django自帶的user表。
設定完成,可以正常從blog_db中獲取blog的資料,但是外鍵關聯user資料無法獲取,會報如下錯誤:
[code]django.db.utils.ProgrammingError: (1146, "Table 'blog_db.auth_user' doesn't exist")[/code]
錯誤顯示:user的資料也從blog_db這個資料庫中讀取。
可是我想做成的效果是,blog_db僅僅儲存blog的資料,外鍵關聯的資料還繼續保存成原來的資料庫,比如我原來的資料庫名是mysite_db,user這些資訊就從mysite_db這個資料庫中獲取,而不是我新建的blog_db庫。
在下新手可能表述不清,我可以再補充,請大佬幫我看看。
下附blog應用的models和view的代碼:
blog.models
from django.db import models
from django.contrib.auth.models import User
from django.contrib.contenttypes.fields import GenericRelation
from django.urls import reverse
from ckeditor_uploader.fields import RichTextUploadingField
from read_statistics.models import ReadDetail
class BlogType(models.Model):
type_name = models.CharField(max_length=20)
def __str__(self):
return self.type_name
class Meta:
verbose_name = u"博客型別"
verbose_name_plural = verbose_name
app_label = "blog"
class Blog(models.Model):
title = models.CharField(max_length=30)
content = RichTextUploadingField()
read_details = GenericRelation(ReadDetail)
author = models.ForeignKey(User,on_delete=models.CASCADE)
blog_type = models.ForeignKey(BlogType,on_delete=models.CASCADE)
created_time = models.DateTimeField(auto_now_add=True)
last_updated_time = models.DateTimeField(auto_now=True)
is_deleted = models.BooleanField(default=False)
def get_url(self):
return reverse('blog_detail',kwargs={'blog_pk':self.pk})
'''def get_email(self):
return self.author.email'''
def __str__(self):
return self.title
class Meta:
ordering = ['-created_time']
verbose_name = u"博客"
verbose_name_plural = verbose_name
app_label = "blog"
blog.views
from django.shortcuts import render,get_object_or_404
from django.core.paginator import Paginator
from django.db.models import Q,Count
from django.conf import settings
from .models import Blog,BlogType
from read_statistics.views import read_statistics_once_read
def blog_common_data(request,blogs_all_list):
paginator = Paginator(blogs_all_list,settings.EACH_PAGE_NUM)
page_num = request.GET.get('page',1)
page_of_blogs = paginator.get_page(page_num)
current_page_num = page_of_blogs.number
page_range = list(range(max(current_page_num - 2, 1), current_page_num)) + \
list(range(current_page_num, min(current_page_num + 2, paginator.num_pages) + 1))
# 加上省略頁碼標記
if current_page_num - 1 > 3:
page_range.insert(0,'...')
if paginator.num_pages - current_page_num > 3:
page_range.append('...')
# 加上首頁和尾頁
if page_range[0] != 1:
page_range.insert(0,1)
if page_range [-1] != paginator.num_pages:
page_range.append(paginator.num_pages)
# 獲取博客分類對應的博客數量
blog_types = BlogType.objects.all()
blog_types_list = []
for blog_type in blog_types:
blog_type.blog_count = Blog.objects.filter(blog_type=blog_type).count()
blog_types_list.append(blog_type)
# 獲取日期分類對應的博客數量
blog_dates = Blog.objects.dates('created_time','month',order='DESC')
blog_date_dict = {}
for blog_date in blog_dates:
blog_count = Blog.objects.filter(created_time__year=blog_date.year,
created_time__month=blog_date.month).count()
blog_date_dict[blog_date] = blog_count
context = {}
context['page_range'] = page_range
context['blogs'] = page_of_blogs.object_list
context['page_of_blogs'] = page_of_blogs
context['types_num'] = blog_types_list
context['blog_dates'] = blog_date_dict
return context
def type_list(request):
blogs_all_list = Blog.objects.all()
context = blog_common_data(request,blogs_all_list)
return render(request,'type_list.html',context)
def blog_detail(request,blog_pk):
blog = get_object_or_404(Blog,pk=blog_pk)
read_cookie_key = read_statistics_once_read(request,blog)
context = {}
context['previous_blog'] = Blog.objects.filter(created_time__gt=blog.created_time).last()
context['next_blog'] = Blog.objects.filter(created_time__lt=blog.created_time).first()
context['blog'] = blog
response = render(request,'blog_detail.html',context) # 回應
response.set_cookie(read_cookie_key,'true') # 閱讀cookie標記
return response
uj5u.com熱心網友回復:
https://blog.csdn.net/songfreeman/article/details/70229839多資料庫設定,你可以試一下
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/105055.html
上一篇:用verilog語言對一個長15的數字串進行SHA256演算法加密
下一篇:匯編語言,字串影片顯示
