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
模型的外键。