关于Django ORM ManyToManyField类型的数据的查找

多对多关系正向查找以及反向查找

models.py

class User(models.Model, JsonableObject):
    username = models.CharField(max_length=100, null=False, verbose_name='用户名', unique=True, db_index=True)
    books = models.ManyToManyField('Book', blank=True, related_name='user', verbose_name='图书')
    class Meta:
        verbose_name = "用户"
        verbose_name_plural = "用户"
class Book(models.Model, JsonableObject):
    name = models.CharField(max_length=100, null=False, verbose_name='用户名', unique=True, db_index=True)
    time = models.DateTimeField(db_index=True, null=True, verbose_name='借阅时间')
    class Meta:
        verbose_name = "图书"
        verbose_name_plural = "图书"

由以上代码可知:一个用户可以同时借阅多本图书,于是就有ManyToManyField作关联。

现查看某一位用户所借阅的图书,可以直接通过books得到该用户借阅的图书信息。

books = User.object.get(id = user_id).books

若反向查看某本图书的借阅人时,通过related_name,就可以得到用户的信息。

user = Book.object.get(id = book_id).user

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值