gpt4 book ai didi

python - 如何使模型的属性仅适用于user.is_staff?

转载 作者:行者123 更新时间:2023-12-01 01:16:59 26 4
gpt4 key购买 nike

模型 Post 具有 bool 字段 moderation,用于在管理员用户(其 user.is_staff

有一个“帖子更新”页面,用户(帖子作者)和管理员用户可以在其中更新帖子信息。我希望仅当用户是管理员 (user.is_staff == True) 时才显示字段审核(这是一个复选框)。

models.py

class Post(models.Model):
...
moderation = models.BooleanField(default=True)
...

forms.py

class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ['title', 'body', 'logo']

views.py

class PostUpdateView(PermissionRequiredMixin, UpdateView):
model = Post
fields = ['title', 'body', 'logo']
permission_required = 'post.can_mark_returned'

post_form.html

{% extends "base_generic.html" %}
{% block content %}
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Submit" />
</form>
{% endblock %}

最佳答案

这个similar question有一些想法给你。

<小时/>

我还可以建议覆盖 FormMixin.get_form_class()并使用modelform_factory() :

from django.forms import modelform_factory

class PostUpdateView(PermissionRequiredMixin, UpdateView):
model = Post
permission_required = 'post.can_mark_returned'

def get_form_class(self)
fields = ['title', 'body', 'logo']
if self.request.user.is_staff:
fields.append('moderation')

return modelform_factory(
self.model,
fields=fields)

关于python - 如何使模型的属性仅适用于user.is_staff?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54238835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com