django中两张表之间有多个ForeignKey的问题

当一张表的多个字段指向同一张表时,会出错。系统无法知道,通过另外一张表,访问XXX_set属性访问到的是哪个属性。这时,我们就需要为每个字段定义一个related_name属性,另外一张表访问这个表时,就会根据related_name的值来得到各个属性了。

例子:

class dutyTeam(models.Model):
    '''
    这里必须定义related_name属性。
    '''
    first=models.ForeignKey(watch,verbose_name='第一值班人',related_name='first')
    second=models.ForeignKey(watch,related_name='second',verbose_name='备用值班人')
    urgent=models.ForeignKey(watch,related_name='urgent',verbose_name='紧急联系人')

一切ok!新建数据库表时就不会报错了。

转载于:https://www.cnblogs.com/chenjianhong/archive/2012/04/09/4145113.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个使用 ForeignKey 字段进行联查询的例子: 假设我们有两个模型,一个是 Book(书籍)模型,另一个是 Publisher(出版社)模型,它们之间通过外键建立了一对多的关系。也就是说,一个出版社可以出版多本书,但一本书只能属于一个出版社。 ```python from django.db import models class Publisher(models.Model): name = models.CharField(max_length=100) city = models.CharField(max_length=100) class Book(models.Model): title = models.CharField(max_length=100) publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE) ``` 现在,我们想要查询所有出版社位于纽约的书籍。我们可以使用双下划线语法来查询关联模型的属性,如下所示: ```python books = Book.objects.filter(publisher__city='New York') ``` 在这个查询,我们使用了双下划线语法来查询 Book 模型所有出版社位于纽约的书籍。首先,我们在 publisher 后面使用双下划线来访问 Publisher 模型的属性。然后,我们使用 city='New York' 来查询所有位于纽约的出版社。最后,我们将查询结果存储在 books 变量。 您还可以通过多级关联查询来访问更深层次的关联模型。例如,如果我们想要查询所有姓氏为 Smith 的作者的出版社位于纽约的书籍,可以使用以下查询: ```python books = Book.objects.filter(authors__name__startswith='Smith', authors__book__publisher__city='New York') ``` 在这个查询,我们通过 authors__book__publisher__city 来访问 Publisher 模型的 city 属性。这样,我们就可以查询所有姓氏为 Smith 的作者的出版社位于纽约的书籍。 希望这个例子可以帮助您理解 Django 使用 ForeignKey 进行联查询。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值