簡體   English   中英

Django管理模型字段設置為當前用戶

[英]Django admin model field set to current user

我有一個領域模型:

class MyModel(models.Model):
    name = models.CharField(max_length=50)
    created_by = models.ForeignKeyField(User)

在我的管理員中:

class MyModelAdmin(admin.ModelAdmin):
    list_display= ("name",)
    fields = ("name",)

在這里,添加MyModel時,我不需要admin中的created_by 我希望將其設置為當前用戶,例如created_by = request.user

我怎樣才能做到這一點?

謝謝

您已經設置了fields以便created_by不會以形式出現在Django admin中。

現在,您需要覆蓋save_model ,並在保存新對象之前設置用戶。

class MyModelAdmin(admin.ModelAdmin):
    fields = ("name",)

    def save_model(self, request, obj, form, change):
        if not change:
            # the object is being created, so set the user
            obj.created_by = request.user
        obj.save()

為此,請覆蓋save_model方法,並將created_by字段設置為當前用戶。

class MyModelAdmin(admin.ModelAdmin):
    list_display= ("name",)
    fields = ("name",)

    def save_model(self, request, obj, form, change):             
        if not change: 
        # can use this condition also to set 'created_by'    
        # if not getattr(obj, 'created_by', None):            
            obj.created_by = request.user
        obj.save()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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