Django Orm 前端中跨表操作

来源:互联网 发布:linux oracle设置密码 编辑:程序博客网 时间:2024/06/05 11:03

需求:传入文章,要求获得对应文章的用户信息,如用户邮箱。

模型:

class Article(models.Model):    '''    文章详细    '''    nid = models.BigAutoField(primary_key=True)    title = models.CharField(verbose_name='文章标题',max_length=128)    summary = models.CharField(verbose_name='文章简介',max_length=255)    read_count = models.IntegerField(default=0)    comment_count = models.IntegerField(default=0)    up_count = models.IntegerField(default=0)    down_count = models.IntegerField(default=0)    create_time = models.DateTimeField(verbose_name='创建时间',auto_now_add=True)    blog = models.ForeignKey(verbose_name='所属博客',to='Blog',to_field='nid')    # category = models.ForeignKey(verbose_name='文章类型',to='Category',to_field='nid',null=True)
class Blog(models.Model):    '''    博客信息    '''    nid = models.BigAutoField(primary_key=True)    title = models.CharField(verbose_name='个人博客标题',max_length=64)    site = models.CharField(verbose_name='个人博客前缀', max_length=32, unique=True)    user = models.OneToOneField(to='UserInfo',to_field='nid')
class UserInfo(models.Model):    '''    用户表    '''    nid = models.BigAutoField(primary_key=True)    username = models.CharField(verbose_name='用户名',max_length=32,unique=True)    password = models.CharField(verbose_name='密码',max_length=64)    nickname = models.CharField(verbose_name='昵称',max_length=32)    email = models.EmailField(verbose_name='邮箱',unique=True)    avatar = models.ImageField(verbose_name='头像',null=True)    create_time = models.DateTimeField(verbose_name='注册时间',auto_now_add=True)

后端传入:

def index(request):    all_articles = models.Article.objects.filter().order_by('-create_time')    return render(request,'index.html',{'all_articles':all_articles})


前端操作查询:

<a href="/{{ post.blog.site }}.html"><div>提问者:{{ post.blog.user.email }}</div></a>



原创粉丝点击