[英]How to set Django model default value equal to result of a query
I'm quite new at Django, and trying to create a model where det default value for Foreign Keys user and department are set to the correct values for the logged in user.我是 Django 的新手,并尝试创建一个 model,其中外键用户和部门的默认值设置为登录用户的正确值。 Normally I use the request object and queries the database, but in the model definition I don't know how to do this.
通常我使用请求 object 并查询数据库,但在 model 定义中我不知道该怎么做。 I suppose a path forward is to make default value a function and make the query in the function, but I am stuck.
我想前进的道路是将默认值设为 function 并在 function 中进行查询,但我被卡住了。 Any help are greatly appreciated.
非常感谢任何帮助。 Here is an example of my code:
这是我的代码示例:
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
Well it is possible but not from the model but from the admin.嗯,这是可能的,但不是来自 model,而是来自管理员。 So, you can do:
所以,你可以这样做:
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()
Now, it will act like default because, when you save to model, the value will be saved from save_model现在,它将像默认值一样,因为当您保存到 model 时,该值将从save_model保存
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.