簡體   English   中英

Django Model 管理員:如何使用當前用戶自動分配和隱藏 created_by 字段並在保存后顯示?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM