Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将Django模型默认值设置为等于查询结果_Python_Django - Fatal编程技术网

Python 如何将Django模型默认值设置为等于查询结果

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

我是Django的新手,尝试创建一个模型,其中外键user和department的det默认值设置为登录用户的正确值。通常我使用请求对象并查询数据库,但在模型定义中我不知道如何做到这一点。我假设前进的路径是将默认值设为函数并在函数中进行查询,但我被卡住了。非常感谢您的帮助。 下面是我的代码示例:

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()

现在,它的行为将类似于默认值,因为当您保存到模型时,值将从中保存

我认为不可能将请求用户添加为默认值。