[英]Django Model Admin: How to auto assign and hide created_by field with current user and display after save?
[英]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.