1

すべてのユーザーが所有者である「ドメイン」を作成できるようにしたいのですが、管理者ユーザーが他のユーザーのために「ドメイン」を作成できるようにしたいと考えています。

これまでのところ、管理者以外のケースに対処するために持っているものは次のとおりです。

# views.py
class DomainCreateView(LoginRequiredMixin, DomainActionMixin, CreateView):
    model = Domain
    action = "created"
    form_class = DomainForm
    success_url = 'domains/'

    def form_valid(self, form):
        form.instance.user = self.request.user
        return super(DomainCreateView, self).form_valid(form)

# forms.py
class DomainForm(forms.ModelForm):
    class Meta:
        model = Domain
        fields = ('title', 'url')

    def __init__(self, *args, **kwargs):
        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.layout = Layout(
            Field('title', placeholder="title"),
            Field('url', placeholder="url"),
        )
        super(DomainForm, self).__init__(*args, **kwargs)

いくつかの mixin とクリスピー フォームを使用しているため、少し標準的ではないことに注意してください。どちらもこの質問に影響を与えるべきではないと思います。

4

1 に答える 1

1

2 つのフォームを定義します。1 つは通常のユーザー用で、もう 1 つはスーパーユーザー用で、追加のuserフィールドがあります。

get_form_class次に、ユーザーの権限に基づいて正しいフォーム クラスを返すメソッドをオーバーライドします。self.request.userメソッドで行ったように、 としてユーザーにアクセスできますform_valid

最後に、form_valid通常のユーザーのみにユーザーを設定するように方法を変更します。

于 2013-06-19T21:49:27.630 に答える