django中的数据库外键操作

Posted 老和尚不念经

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django中的数据库外键操作相关的知识,希望对你有一定的参考价值。

mysql为例:
(1)在model中定义两个数据表,食物信息和食物类别信息
class foodInfo(models.Model):
    food_id = models.AutoField(max_length=4)   #自定义主键,不指定主键默认会生成一个名为‘ID’列的主键
    food_name = models.CharField(max_length=10)
    food_content = models.CharField(max_length=100)
    food_price = models.FloatField()
    food_sort = models.ForeignKey(foodSorts)   #外键指向到foodSorts表中的主键
    food_unit = models.CharField(max_length=4)
 
    def __str__(self):
        return self.food_name
 
class foodSorts(models.Model):
    sort_name = models.CharField(max_length=10)
    sort_id = models.AutoField(max_length=4)
 
    def __str__(self):
        return self.sort_name
 
(2)操作外键读取数据
从foodInfo表中通过外键获取foodSorts表中的信息(数据关系是一对一):
a = foodInfo.objects.get(food_id=10)
a.foodSorts
a.foodSorts.sort_id
 
从foodSorts表中反向获取foodInfo表中的信息(数据关系是一对多):
b = foodSorts.objects.get(sort_id=4)
b.foodinfo_set.all()
属性名称foodinfo_set是由模型名称的小写(如foodInfo)加_set组成的。这里说一下,在ForeignKey函数中有一个参数related_name,如果设置了这个参数就可以不用_set的形式了,可以直接用related_name的值
 

以上是关于django中的数据库外键操作的主要内容,如果未能解决你的问题,请参考以下文章

django数据库操作-增删改查-多对多关系以及一对多(外键)关系

Django_数据库——ORM对象操作

转: django数据库操作-增删改查-多对多关系以及一对多(外键)关系

Django中的非主外键

如何使用 django 为文件列表中的每个文件创建外键集

Django 访问值对象中的反向外键数据