在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的外键关系非常强大且灵活。通过合理地使用外键,我们可以轻松地建立起模型之间的关联,以实现复杂的数据存储和查询需求。