[英]Django Model Admin: How to auto assign and hide created_by field with current user and display after save?
我正在處理某些 model 會計,其中包括以下 model 屬性。
class Accounting(model.Model):
booking = models.OneToOneField(Booking, on_delete=models.PROTECT, null=True)
description = models.CharField(max_length=100, validators=[])
created_by = models.ForeignKey(User, on_delete=models.PROTECT)
bus_company = models.ForeignKey(BusCompany, models.PROTECT)
在 admin.py 中我到目前為止所做的
@admin.register(Accounting)
class AccountingAdmin(ModelAdmin):
list_display =(
'bus_company',
'description ',
'bus_company ',
)
現在,當我使用 Django admin 添加Accounting
時。 我想隱藏created_by
並將當前登錄的用戶設置為created_by
。 目前它是superuser
,所以在添加數據后 created_by 字段也會更新並顯示我該怎么做?
要隱藏文件,請將 editable 設置為 False
created_by = models.Model(editable=False)
現在,還要將 blank=True 添加到 created_by 並覆蓋 save 方法:
created_by = models.Model(blank=True,null=True,editable=False)
def save(self,user,*args,**kwargs):
user = user
super().save(*args,**kwargs)
現在在保存這個 object 時:
def view_name(request):
user = request.user
atributes = {'booking':'blabl','description':'blablablab'
,'bus_company':'blab blab'}
account = Account(**atributes)
account.save(user=user)
我在管理員中添加了只讀字段
@admin.register(Accounting)
class AccountingAdmin(ModelAdmin):
list_display =(
'bus_company',
'description ',
'bus_company ',
)
readonly_fields = (
'created_by',
)
def save_model(self, request, obj, form, change):
if not change:
obj.created_by = request.user
obj.save()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.