0
class TaskManager(models.Manager):
    def get_query_set(self):
         return super(TaskManager, self).get_query_set().filter(Owner='jim')

class Task(models.Model):
    Name = models.CharField('Title', max_length=200)
    Notes = models.TextField('Description',max_length=2000, null=True)
    project = models.ForeignKey(Project,null=True, blank=True)
    Owner = models.CharField(max_length=100, choices=owner_set)

    objects =  TaskManager()
    def __unicode__(self):
    return self.Name

models.py に 2 つのモデルがあり、すべての Task にプロジェクトがあります。しかし、タスクページに入ると、デフォルトですべてのタスクがリストされます。したがって、現在のユーザーの Task のみを一覧表示したいと考えていますby default。Task.Owner=現在のユーザーということです。誰がこれを手伝ってくれますか、ありがとう!

私はネットから検索して解決策を見つけました。今貼り付けたコードを更新します。全てに感謝。

4

3 に答える 3

2

なぜこれをしないのですか!

Task.objects.filter(owner = current_user)

アップデート:

1) 独自のカスタム テンプレートをフィルター処理する場合は、これをビュー コードに追加します。

2) 管理サイトをカスタマイズしようとしている場合は、これを行います。

from django.contrib import admin
from models import MyModel

class TaskAdmin(admin.ModelAdmin): 

    def queryset(self, request): 
        return super(TaskAdmin, self).queryset(request).filter(owner = request.user)

admin.site.register(Task, TaskAdmin)
于 2012-11-28T06:58:09.967 に答える
1

ModelAdmin クラスに以下を追加する必要があります。

class TaskAdmin(...):

    def queryset(self, request):
         qs = super(TaskAdmin, self).queryset(request)
         return qs.filter(Owner=request.user)

これにより、デフォルトのクエリセットが上書きされます

詳細はこちら: https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.queryset

于 2012-11-28T16:13:44.803 に答える
0

モデルのデフォルト フィルタを変更し、modelAdmin を使用せずにすべてのアイテムをモデル リストに表示しないようにしたいだけです。modelAdmin は手動でクリックする必要があるフィルタを提供するだけなので、デフォルトで自動的にモデルをフィルタリングしたい

于 2012-11-28T07:47:14.030 に答える