详解Django的 get_user_model() 函数:获取用户模型

  • Post category:Python

get_user_model()函数是Django中一个用来获取User模型的方法。它的作用是获取Django项目中当前活跃的用户模型。

使用get_user_model()函数可以减少硬编码中的bug,使得代码更可读和灵活。

使用方法:

django.contrib.auth模块中调用get_user_model()函数即可。该函数返回当前活跃的用户模型类。

from django.contrib.auth import get_user_model
User = get_user_model()

以下是两个实例:

实例1

我们可以在模型中使用User模型,而不用直接引用它:

from django.conf import settings
from django.db import models

class Post(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    body = models.TextField()

    def __str__(self):
        return self.title

在上面的例子中,我们使用settings.AUTH_USER_MODEL来引用当前活跃的用户模型,因此无论何时更改用户模型,Post模型都会自动更新它的外键引用。

实例2

我们可以使用get_user_model()函数来获取当前活跃的用户模型类:

from django.contrib.auth import get_user_model
User = get_user_model()

class Order(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    order_date = models.DateTimeField(auto_now_add=True)
    total_price = models.DecimalField(max_digits=10, decimal_places=2)

    def __str__(self):
        return str(self.id)

在上面的例子中,我们先获取当前活跃的用户模型类,然后使用它来定义Order模型的外键。