Форум сайта python.su
Привет, всем!
Столкнулась со следующей проблемой: в админке джанго не получается отобразить скрытые поля формы.
Суть: на сайте есть форма, в которой содержится информации о сданном задании. В скрытое поле формы записывается дата и время сдачи задания. В админке администратор сайта должен иметь возможность просмотреть сданное задание и время его отправки.
Есть модель задания:
class PassTheTask(models.Model): name = models.ForeignKey(Task) text = models.TextField(u'Описание') time = models.DateTimeField(u'Дата и время сдачи задания', auto_now_add=True, null=True, blank=True)
class PassForm(forms.ModelForm): class Meta: model = PassTheTask widgets = {'time': forms.HiddenInput()} fields = ['name', 'text', 'link']
def passthetask(request): if request.method == 'POST': form = PassForm(request.POST) if form.is_valid(): name = form.cleaned_data['name'] text = form.cleaned_data['text'] link = form.cleaned_data['link'] messages.add_message(request, messages.INFO, 'Задание отправлено.') form.save() return render(request, 'game/task.html', {'form': form}) else: form = PassForm() return render(request, 'game/task.html', {'form': form})
<form method="post" enctype="multipart/form-data" action=""> {% csrf_token %} {{form.as_p}} <input type="hidden" name="time"> <input type="submit" value="Сдать задание" /> </form>
class PassTheTaskForm(forms.ModelForm): STATUS_CHOICES = ( ('WAIT', u'Ожидает проверки'), ('PASS', u'Сдано успешно'), ('VIEWED', u'Сдано не успешно') ) status = forms.ChoiceField(choices=STATUS_CHOICES) class PassTheTaskAdmin(ModelAdmin): fields = ('name', 'text'', 'status', 'time') list_display = ('name', 'status',) admin.site.register(PassTheTask, PassTheTaskAdmin)
Офлайн
А где Мета у PassTheTaskForm? Там должна быть указана модель и филды.
delfenesЗачем это надо то? Что серверная сторона сама не определит, когда в неё реквест свалился?
Или может есть другой способ передавать время заполнения формы?
delfenesВы не находите, что это оксюморон?
редактированием скрытых полей
Офлайн
Ок, как вытащить когда реквест свалился?
мне нужно чтобы админ сайта видел, когда задание сдано.
Отредактировано FishHook (Янв. 6, 2016 15:12:01)
Офлайн
delfenes
Ок, как вытащить когда реквест свалился?
datetime.datetime.now()
Офлайн
delfenesТак покажите ему, нахера делать поле скрытым, а потом спрашивать “как показать скрытое поле”.
мне нужно чтобы админ сайта видел, когда задание сдано
Офлайн
FishHookНет, не очевидно))))
Отредактировано delfenes (Янв. 6, 2016 15:24:00)
Офлайн
delfenes
delfenesВстречный вопрос, на кой хрен у тебя в модели написано это
А мне нужно время создания записи ВПОЛНЕ КОНКРЕТНОЙ
delfenesКакому пользователю? Зачем ты показываешь админу и пользователю одинаковые формы?
Хорошо, предположим я не скрою это поле. Но зафиг пользователю инфа о времени создания записи?
Офлайн
Так у меня с датой все норм. Она сохраняется! С моделью проблем нет.
Проблема посмотреть ее в админке админу. Почему я пользователям админку не показываю. Тут все норм. ЭЭЭ внимательно читай первый пост. Формы не одинаковые!
Для админки я беру данные из модели одной и основе нее же модели я строю форму (поля для формы). А как по-другому, если мне нужно именно эту модель заполнить?
У меня есть модель, на основе ее полей форма, которая показывается юзеру для заполнения задания. В админке из формы для админки PassTheTaskForm показывается данные введенные пользователем.
Добавила мета класс.
class PassTheTaskForm(forms.ModelForm): STATUS_CHOICES = ( ('WAIT', u'Ожидает проверки'), ('PASS', u'Сдано успешно'), ('VIEWED', u'Сдано не успешно') ) status = forms.ChoiceField(choices=STATUS_CHOICES) class Meta: model = PassTheTask exclude = ['',] fileds = ['name', 'text', 'link', 'status', 'time'] class PassTheTaskAdmin(ModelAdmin): form = PassTheTaskForm fields = ('name', 'text', 'link', 'status', 'time') вот когда тут есть time ругается list_display = ('name', 'status', 'time') а когда тут нормально показывает! admin.site.register(PassTheTask, PassTheTaskAdmin)
Офлайн
delfenes
В админке из формы для админки PassTheTaskForm показывается данные введенные пользователем.
class PassTheTask(models.Model): name = models.ForeignKey(Task) text = models.TextField(u'Описание') time = models.DateTimeField(u'Дата и время сдачи задания', auto_now_add=True, null=True, blank=True) ....... ....... class PassTheTaskAdmin(ModelAdmin): fields = ('name', 'text'', 'status', 'time') list_display = ('name', 'status',) admin.site.register(PassTheTask, PassTheTaskAdmin)
Офлайн
ЭЭЭЭ ты чего! в верхнем посте написано:
Админка:
class PassTheTaskForm(forms.ModelForm): STATUS_CHOICES = ( ('WAIT', u'Ожидает проверки'), ('PASS', u'Сдано успешно'), ('VIEWED', u'Сдано не успешно') ) status = forms.ChoiceField(choices=STATUS_CHOICES) class PassTheTaskAdmin(ModelAdmin): fields = ('name', 'text'', 'status', 'time') list_display = ('name', 'status',) admin.site.register(PassTheTask, PassTheTaskAdmin)
class PassTheTaskAdmin(ModelAdmin): form = PassTheTaskForm
# -*- coding: utf-8 -*- from django.contrib import admin from django.contrib.admin import ModelAdmin from .models import * from django import forms # Register your models here. #class Task(ModelAdmin): admin.site.register(Task) class PassTheTaskForm(forms.ModelForm): STATUS_CHOICES = ( ('WAIT', u'Ожидает проверки'), ('PASS', u'Сдано успешно'), ('VIEWED', u'Сдано не успешно') ) status = forms.ChoiceField(choices=STATUS_CHOICES) class Meta: model = PassTheTask exclude = ['',] fileds = ['name', 'text', 'link', 'status', 'time'] class PassTheTaskAdmin(ModelAdmin): form = PassTheTaskForm fields = ('name', 'text', 'link', 'status', 'time') list_display = ('name', 'status', 'time') admin.site.register(PassTheTask, PassTheTaskAdmin)
Отредактировано delfenes (Янв. 6, 2016 18:22:38)
Офлайн