0

データベースに記録された資料があり、別のユーザーに属しています。これらは、プライベート アクセス、グループの一部、または全員への無料アクセスのいずれかです。たとえば、現在のユーザーがすべての資料のオープンアクセスにアクセスできるようにしたい (ただし、作成していないもの (読み取り専用フィールド) を変更することはできません)。ただし、他のレコードを追加することはできます..

私はモデルを持っています

DROITS = (
('lecture', 'all'),
('groupe', 'group')
('private', 'private data')

class Material(models.Model):
    name = models.CharField(_('name'), max_length=50)
    category = models.ForeignKey(Category, verbose_name=_('category'))
    user = models.ForeignKey(User, default=None, blank= True, null = True)
    droits_acces = models.CharField(_('access right'), max_length=150, choices =      DROITS, default= 'private' )
    groupe = models.ForeignKey(Group,  verbose_name=_('group'), blank = True, null= True, default = None)

管理者 :

class MaterialAdmin(admin.ModelAdmin):
   list_display = ('name', 'description', 'user', 'created', 'droits_acces')
   inlines = (MediaInline, UniteProperty2Inline, Essai_TemperatureInline)
   def queryset(self, request):
   qs = super(MaterialAdmin, self).queryset(request)
   if request.user.is_superuser:
      return qs
   else:
.....

最初に、ユーザーと素材を関連付けます。どうすればいいですか?クラスMaterialを使用して、材料に関連するフィールドのみをフィルタリングします

マテリアルが現在のユーザーに属していない場合は、「Essai_TemperatureInline」読み取りアクセスのみを設定する必要があります

4

1 に答える 1

0

何を求めているのかわかりませんが、このマテリアルがこのユーザーに属しているかどうかを知る方法を尋ねていると思います。

それは次のようになります。

belongToMe = Materials.objects.filter(user=u).filter(droits_acces="lecture")

これは、 useruに属し、 にあるすべての Material を返します。lecturedroits_acces

属していないかどうかを知る方法を尋ねているのかもしれません。それは次のようなものかもしれません。

notBelongToMe = Materials.objects.exclude(user=u).filter(droits_acces="lecture")

ここで、ユーザーに属さず、持っているものをすべて取得しlectureますdroits_acces

それが役に立てば幸い。

于 2014-04-01T09:03:46.883 に答える