Как визуализировать поля формы динамически

У меня есть две группы пользователей. 1. писатель 2. редакторы

Если пользователь вошел как писатель, отобразите title а также body поле модели статьи, если пользователь вошел в систему как редактор, отобразить titlebody а также approved поле, чтобы редактор мог утвердить статью, просмотрев ее.

Мне нужно реализовать эту функцию без использования администратора Django. как я мог достичь этого?

class Article(models.Model):
choices = (("review", "Review"))
title = models.CharField("Article title", max_length=200)
body = models.TextField()
writer = models.ForeignKey(User, on_delete=models.CASCADE)
status = models.CharField(
    max_length=20,
    choices=(
        ('reivew', 'review'),
        ('published', 'published')
    )
)

def get_absolute_url(self):
    reverse('article-detail', kwargs={
        "pk": self.id
    })

views.py

class ArticleCreate(CreateView):
    model = Article
    # Don't need to define inside meta class
    fields = ("title", "body")

    # Override the form_valid method to populate your data.
    def form_valid(self, form):
        form.instance.writer = self.request.user
        form.instance.status = "published"
        return super(ArticleCreate, self).form_valid(form)

    # Don't need success url
    # get_absolute_url is already defined in model

Q. Где написать логику, чтобы скрыть и отобразить status поле в зависимости от типа группы пользователей

if u.groups.filter(name="Editors").exists():
    #display status field 
else:
   # hide status field. 

Я знаю, что могу сделать это с помощью администратора django, используя эту логику, но я хочу реализовать свои собственные общие представления и формы.

class ArticleAdmin(admin.ModelAdmin):
fields = ['title', 'body']  # here comes the fields open to all users

def change_view(self, request, object_id, extra_context=None):  # override default admin change behaviour
    if request.user in Editors:  # an example 
        self.fields.append('status')  # add field 2 to your `fields` 

0 ответов

Другие вопросы по тегам