0

追加のフィールドを持つCustomUserモデルと、regionこれと同じフィールドを持つ他のモデルがあります。

CustomUserのインスタンスが、同じリージョン値のみで他のモデルのインスタンスを追加/削除/表示(すべてのアクセス許可を付与)できるようにするにはどうすればよいですか?

編集

vivek soundrapandiが提案したように、カスタムマネージャーを使用すると、次のことができます。

class ShopManager(models.Manager):
    def get_query_set(self):
        return super(ShopManager, self).get_query_set().filter(region=?)

しかし、現在接続しているユーザーの地域でショップインスタンスをフィルタリングするにはどうすればよいですか?

そしてこれにより、CustomUserはデフォルトのマネージャーを使用して他のリージョンのショップインスタンスを変更できますよね?

Djangoパーミッションシステムを使用してそれを行う方法はありませんか?

ありがとう

4

2 に答える 2

2

django-guardianを使用します(実際にはそれだけですが、SOはより多くのキャラクターを必要としています)

于 2012-06-06T12:19:32.143 に答える
0

モデルマネージャを使用して独自の関数を使用してみてください。 ドキュメントの説明については、ここをクリックしてください

わかった、

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

class Entry(models.Model):
    blog = models.ForeignKey(Blog)
    name = models.CharField(max_length=100)
Entry.objects.filter(blog__name__exact='Beatles Blog')

この例では、「BeatlesBlog」という名前のブログを持つすべてのEntryオブジェクトを取得します。したがって、モデルマネージャは、参照する他のすべてのクラスに対して同じことを実行し、それらを組み合わせて単一の結果セットを生成する必要があります。問題が正しいことを理解している場合は、これが解決策になるはずです。

于 2012-06-06T11:16:20.377 に答える