zoukankan      html  css  js  c++  java
  • django建立模型的一些体会(原创)

    最近使用django做后台实现了一个简单的在线博客系统。其中使用django建立模型(也就是所谓的数据表)碰到了很多问题,也学到了很多,现在奉献出来与大家分享。
    1.我碰到的第一个问题是要建立一个日志的模型。日志中有作者属性,其中作者是一个模型。定义如下:
    //这个和定义面向关系数据库很类似,就不说了~
    class Users(models.Model):
        username = models.CharField(primary_key = True, max_length = 30)
        password = models.CharField(max_length = 30)
        nickname = models.CharField(max_length = 30)
    现在来定义日志的模型。
    作者和日志是一对多关系,所以可以在Diary中使用ForeignKey
    class Diary(models.Model):
        user       = models.ForeignKey(Users)
        Title      = models.CharField(max_length = 100)
        Content    = models.CharField(max_length = 1000) #no restriction
        Type       = models.CharField(max_length = 30)
        Attri      = models.CharField(max_length = 10)
        PublicDate = models.DateField()
    但是使用这个模型就要小心了~因为如果我们检索日志,直接返回Diary.objects.all()的话,那么返回的结果中,user是空的!因为在Diary中,User属性只是一个引用。这时就要:d = Diary.objects.select_related();这个很关键
    2. 建立好友模型。该模型描述如下:一个用户有很多好友,并且可以对好友进行分组。如果按照面向关系的数据库的定义的话,我们可以这样:首先定义个user表,
    然后定义一个Group表,表中有user, friend, Groupname属性。但是使用Django建立这样的模型时,它会提示出错~不能在一个模型中存在两个指向统一模型的引用。这时就需要另外一种定义模型的方法。
       分析好友模型,我们可以得知,用户与其好友是多对多关系。这样就好办了,django提供了一个ManyToManyField关键字,用来定义这种关系。
    class Friend(models.Model):
        friend = models.ManyToManyField(Users)

    class Group(models.Model):
        user       = models.ForeignKey(Users)
        member     = models.ForeignKey(Friend)
        groupname  = models.CharField(max_length = 100)
        def __unicode__(self):
            return self.groupname   
    这样便可以定义个多对多关系了~

          ----David Cai 2009-8-31晚于金山公司
  • 相关阅读:
    Android----paint触摸轨迹监听
    Android----ListView入门知识--各种Adapter配合使用
    Android------自定义ListView详解
    Android----drawable state各个属性详解----ListView几个比较特别的属性:
    Android------三种监听OnTouchListener、OnLongClickListener同时实现即其中返回值true或者false的含义
    Android----基于多触控的图片缩放和拖动代码实现
    Android-----View绘制流程以及invalidate()等相关方法分析 .
    android-------手写签名系统的设计与实现之实现画笔设置
    安卓APP动态调试-IDA实用攻略
    win10怎么关闭把管理员权限
  • 原文地址:https://www.cnblogs.com/xingluzhe/p/1557535.html
Copyright © 2011-2022 走看看