Python 如何将Django模型默认值设置为等于查询结果
我是Django的新手,尝试创建一个模型,其中外键user和department的det默认值设置为登录用户的正确值。通常我使用请求对象并查询数据库,但在模型定义中我不知道如何做到这一点。我假设前进的路径是将默认值设为函数并在函数中进行查询,但我被卡住了。非常感谢您的帮助。 下面是我的代码示例:Python 如何将Django模型默认值设置为等于查询结果,python,django,Python,Django,我是Django的新手,尝试创建一个模型,其中外键user和department的det默认值设置为登录用户的正确值。通常我使用请求对象并查询数据库,但在模型定义中我不知道如何做到这一点。我假设前进的路径是将默认值设为函数并在函数中进行查询,但我被卡住了。非常感谢您的帮助。 下面是我的代码示例: from django.contrib.auth import get_user_model from django.db import models from another_app.models i
from django.contrib.auth import get_user_model
from django.db import models
from another_app.models import Department, DepartmentPermissions
class Article(models.Model):
header = models.CharField(max_length=200)
text = models.CharField(max_length=800)
owner = models(get_user_model(), related_name='owner_article', on_delete=models.PROTECT)
department = models.ForeignKey(Department, on_delete=models.CASCADE) #here I want it defaulted to DepartmentPermissions.objets.get(user= <logged in user>)[0].department
从django.contrib.auth导入get\u user\u模型
从django.db导入模型
从另一个app.models导入部门,部门权限
类文章(models.Model):
页眉=models.CharField(最大长度=200)
text=models.CharField(最大长度=800)
owner=models(在删除=models.PROTECT上获取\u user\u model(),相关的\u name='owner\u文章)
department=models.ForeignKey(department,on_delete=models.CASCADE)#这里我希望它默认为DepartmentPermissions.objets.get(user=)[0]。department
这是不可能的。这是您的业务逻辑的一部分。您应该在您的数据库中完成,或者(如果您使用Django Rest框架)这是可能的,但不是从模型而是从管理员那里。因此,您可以:
from django.contrib.auth import get_user_model
from django.db import models
from another_app.models import Department, DepartmentPermissions
# import admin
from django.contrib import admin
class Article(models.Model):
header = models.CharField(max_length=200)
text = models.CharField(max_length=800)
owner = models(get_user_model(), related_name='owner_article', on_delete=models.PROTECT)
department = models.ForeignKey(Department, on_delete=models.CASCADE)
class ArticleAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
obj.department = request.user
obj.save()
现在,它的行为将类似于默认值,因为当您保存到模型时,值将从中保存我认为不可能将请求用户添加为默认值。