2011-07-20 5 views
3

私はモデルMessageを持っています。それはフォームマネージャです。フィールド "ユーザー"と "グループ"を入力するには、現在ログインしているユーザーIDを知る必要がありますが、保存する前に取得する方法はわかりません。現在ログインしているユーザIDをDjango Admin Panelで入手するにはどうしたらいいですか?

class Message(models.Model): 
    title = models.CharField(max_length = 100) 
    text = models.TextField() 
    date = models.DateTimeField(auto_now_add=True) 
    user = models.ForeignKey(User, null = True, blank = True) 
    main_category = models.ForeignKey(MainCategory) 
    sub_category = models.ForeignKey(SubCategory) 
    groups = models.ManyToManyField(Group) 

class MessageAdminForm(forms.ModelForm): 
    def __init__(self, *arg, **kwargs): 
     super(MessageAdminForm, self).__init__(*arg, **kwargs) 
     self.initial['main_category'] = MainCategory.objects.get(title = 'News') 

答えて

7

この形式では使用しないでください。管理サブクラスでsave_modelメソッドをオーバーライドします。要求にアクセスできます。

class MessageAdmin(admin.ModelAdmin): 

    def save_model(self, request, obj, form, change): 
     obj.user = request.user 
     super(MessageAdmin, self).save(request, obj, form, change) 
+1

ERROR ---「スーパー」オブジェクトが使用することを解決するには 「保存」何の属性を持っていない--- スーパー(MessageAdmin、自己).save_model:ここで私は、現時点で働いている何かからの抜粋です(リクエスト、オブジェクト、フォーム、変更) – GrvTyagi

0

編集:ダニエルの方法が優れています。あなたのビューで

user = request.user 
if user.is_authenticated(): 
    user_id=user.pk # pk means primary key 

しかし、あなたは通常、IDに対処していません。 Userフィールドをidではなくオブジェクトに設定します。

def question_submit(request): 
    u = request.user 
    if u.is_authenticated(): 
     if q.is_valid(): 
      f=q.save(commit=False) 
      f.user=u 
      f.save() 

      return JsonResponse({'success': True}) 
関連する問題