多对多关系正向查找以及反向查找
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