django model 定义 meta 如何返回retrun多个外键
时间: 2024-01-10 16:02:58 浏览: 72
在 Django 的 model 中,我们可以使用 ForeignKey 字段来定义一个外键。如果我们要返回多个外键,可以在 model 的 Meta 类中使用 related_name 参数来定义外键的名称,并在 related_name 中使用通配符来实现返回多个外键。
例如,我们有一个 Book model 和一个 Author model,一个 Book 可以有多个作者,我们可以这样定义 Book model:
```python
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author, related_name='books')
```
在上述代码中,我们使用了 ManyToManyField 来定义一个多对多的关系,并指定了 related_name 参数为 'books',这样就可以通过 Author model 的 books 属性来访问一个作者写的所有书籍。
如果要返回多个外键,可以使用类似的方法来定义多个 ForeignKey,并使用不同的 related_name。例如,我们可以这样定义 Book model:
```python
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Publisher(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
author1 = models.ForeignKey(Author, related_name='books1', on_delete=models.CASCADE)
author2 = models.ForeignKey(Author, related_name='books2', on_delete=models.CASCADE)
publisher = models.ForeignKey(Publisher, related_name='books', on_delete=models.CASCADE)
```
在上述代码中,我们定义了两个 ForeignKey 字段,分别对应两个作者,并分别指定了不同的 related_name。这样就可以通过 Author model 的 books1 和 books2 属性来访问两个作者分别写的所有书籍,通过 Publisher model 的 books 属性来访问一个出版社出版的所有书籍。
阅读全文