在Django中,模型之间的关系是通过外键来建立的。在本文中,我们将详细探讨Django模型中外键关系的使用。
1. 一对一关系
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
# 其他字段2. 一对多关系
class Project(models.Model):
name = models.CharField(max_length=50)
class Task(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE)
# 其他字段3. 多对多关系
class Book(models.Model):
name = models.CharField(max_length=50)
class Author(models.Model):
name = models.CharField(max_length=50)
books = models.ManyToManyField(Book)4. 多表继承
class Animal(models.Model):
name = models.CharField(max_length=50)
class Meta:
abstract = True
class Cat(Animal):
color = models.CharField(max_length=20)
class Dog(Animal):
breed = models.CharField(max_length=20)5. 多态关系
class Media(models.Model):
name = models.CharField(max_length=50)
type = models.CharField(max_length=20)
def __str__(self):
return self.name
class Movie(Media):
duration = models.IntegerField()
class Song(Media):
artist = models.CharField(max_length=50)Django的外键关系非常强大且灵活。通过合理地使用外键,我们可以轻松地建立起模型之间的关联,以实现复杂的数据存储和查询需求。