djangoレストフレームワーク:SlugRelatedFieldオプション-ユーザーによる制限

初心者_

注:私はdjangorestフレームワークを初めて使用します。それを使った最初のプロジェクト。私のモデルには外部キーがあり、シリアライザーでSlugRelatedFieldによってリンクします。この関連モデルは、選択できるオプションの小さなリストですが、選択できるものはユーザー(またはより具体的にはユーザーグループ)によって異なります。

ユーザーをセリライザーに入れる方法を説明するこの質問を見つけましたしかし、フィールド定義は静的であるため、これは役に立たないようですよね?

私が持っている無関係な部分を取り除く:

class MyModelSerializer(serializers.ModelSerializer):

        sequence =  serializers.SlugRelatedField(
        many=False,
        read_only=False,
        slug_field='prefix',
        queryset=Sequence.objects.filter(active=True,
                sequence_groups__sequence_group_id__in=SequenceGroup.objects.filter(users=serializers.CurrentUserDefault()))
    )

このクエリは、通常の形式でも使用するので機能します。開発を開始したとき。サーバー例外が発生します:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'CurrentUserDefault'

だから私の質問は、どうすれば現在のユーザーをSlugRelatedFieldのクエリセットに入れることができますか?

初心者_

何時間も試した後、質問を書き留めることで解決策が得られるのはおかしいです。

  1. ModelViewSetの滅菌器コンテキストにリクエストを追加します

    以下のメソッドをModelViewSetに追加するだけです。

    def get_serializer_context(self):
        return {"request": self.request}
    
  2. SerializerのコンストラクターでSlugRelatedFieldのクエリセットを調整します

    def __init__(self, *args, **kwargs):
        super(MyModelSerializer, self).__init__(*args, **kwargs)
        # superuser can choose from all sequences, normal users can only choose from
        # active sequences he is assigned to
        request = self.context.get("request")
        if request and hasattr(request, "user"):
            sequence = self.fields['sequence']
            if request.user.is_superuser:
                sequence.queryset = Sequence.objects.all()
            else:
                sequence.queryset = Sequence.objects.filter(active=True,
                        sequence_groups__sequence_group_id__in=SequenceGroup.objects.filter(users=request.user))
    

私の場合、管理者は利用可能なオプションのいずれかを選択できるはずなので、追加の条件があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

DjangoレストフレームワークでModelSerializerフィールドをオプションにする方法

Django - ユーザーによる同じ値へのアクセス制限

Django RESTフレームワーク:オブジェクトへのユーザーアクセスを制限する

フォームの送信をユーザーに制限する

ユーザーの投稿/日を制限するdjango(stackoverflowと同じように)

ユーザーごとにFlaskアプリケーションをレート制限するにはどうすればよいですか?

時間によるユーザーセッションの制限フラスコ

データリストを使用してオプション以外のデータを入力するようにユーザーを制限する方法

同じユーザーによるFirebase認証制限ログイン

djangoフレームワーククラスベースのビューでログインしたユーザーに属するトランザクションの売上のみを表示するようにフィルタリングする方法

Xcodeとオプションのフレームワーク

BeegoフレームワークでPOSTリクエストがオプションとして扱われる

ユーザーのアクションを1回だけ発生するように制限する

エンティティフレームワーク6リポジトリパターンで、ユーザーが自分のエンティティのみにアクセスするように制限する

毎日mysqlに新しいレコードを追加するようにユーザーに制限を与える

ユーザーの電子メールによるアクセスを制限する Django Saleor

Djangoで、ユーザーを特定のURLに制限する

Django RESTフレームワーク-ネストされたシリアライザーのクエリ制限?

sftp ユーザーをホーム ディレクトリに制限し、アクセスを許可する

Django Restフレームワーク:ModelViewSetでページネーションをオフ/オンにする方法

ユーザーを特定のディレクトリに制限する

Djangoレストフレームワーク+シンプルなJWT-パーミッションクラスは常に有効

オプションのフレームワークをリンクする

ユーザートークンの制限を確認するにはどうすればよいですか?

固定幅からレスポンシブフレームワークまでの最良のオプション

mysqlのみを使用するようにユーザー権限を制限する方法

許可されたユーザーロールによるWooCommerceクーポンの使用制限

スタッフユーザーをユーザーダッシュボードに制限する

Django Restフレームワークは、ページネーションの制限とオフセットを検証します

TOP 一覧

  1. 1

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  2. 2

    Spring Boot Filter is not getting invoked if remove @component in fitler class

  3. 3

    Python / SciPyのピーク検出アルゴリズム

  4. 4

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  5. 5

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  6. 6

    androidsoongビルドシステムによるネイティブコードカバレッジ

  7. 7

    ZScalerと証明書の問題により、Dockerを使用できません

  8. 8

    VisualStudioコードの特異点/ドッカー画像でPythonインタープリターを使用するにはどうすればよいですか?

  9. 9

    ビュー用にサイズ変更した後の画像の高さと幅を取得する方法

  10. 10

    二次導関数を数値計算するときの大きな誤差

  11. 11

    Ansibleで複数行のシェルスクリプトを実行する方法

  12. 12

    画像変更コードを実行してもボタンの画像が変更されない

  13. 13

    Reactでclsxを使用する方法

  14. 14

    Three.js indexed BufferGeometry vs. InstancedBufferGeometry

  15. 15

    __init__。pyファイルの整理中に循環インポートエラーが発生しました

  16. 16

    PyTesseractを使用した背景色のため、スクリーンショットからテキストを読み取ることができません

  17. 17

    値間の一致を見つける最も簡単な方法は何ですか

  18. 18

    reCAPTCHA-エラーコード:ユーザーの応答を検証するときの「missing-input-response」、「missing-input-secret」(POSTの詳細がない)

  19. 19

    三項演算子良い練習の代わりとしてOptional.ofNullableを使用していますか?

  20. 20

    好き/愛の関係のためのデータベース設計

  21. 21

    エンティティIDを含む@RequestBody属性をSpringの対応するエンティティに変換します

ホットタグ

アーカイブ