2015-07-12 111 views
1

我有一個領域的典範:Django管理模式字段設置爲當前用戶

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

在我的管理:

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

在這裏我不想created_by的管理,同時增加爲MyModel。我希望它被設置爲當前用戶,如created_by = request.user

我該怎麼做?

謝謝

+0

的可能重複[如何自動插入創造Django管理對象時,當前的用戶?](http://stackoverflow.com/questions/2991365/how-to-auto-insert-the-current -user-when-creating-an-object-in-django-admin) – jgadelange

回答

5

您已經設置fields使created_by沒有出現在形式Django管理。

現在您需要覆蓋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() 
+0

沒有爲我工作......保持這兩個字段,並嘗試在字段中看到request.user。它不會出現 – gamer

+0

我不應該返回任何東西嗎?模型保存後? – gamer

+0

謝謝..我不得不將模型字段設置爲空並空白爲真 – gamer

0

爲了做到這一點重寫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() 
+0

我沒有看到我的表單中的用戶。當我嘗試保存沒有created_by它給出錯誤,這是該字段是必需的 – gamer

+0

@Alasdair更新它來檢查'obj'是否具有'created_by'屬性集。 –

+0

@gamer嘗試將'null = True'和'blank = True'添加到'created_by'。 –

相關問題