Форум сайта python.su
0
Привет, всем!
Столкнулась со следующей проблемой: в админке джанго не получается отобразить скрытые поля формы.
Суть: на сайте есть форма, в которой содержится информации о сданном задании. В скрытое поле формы записывается дата и время сдачи задания. В админке администратор сайта должен иметь возможность просмотреть сданное задание и время его отправки.
Есть модель задания:
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)
Офлайн
568
А где Мета у PassTheTaskForm? Там должна быть указана модель и филды.
delfenesЗачем это надо то? Что серверная сторона сама не определит, когда в неё реквест свалился?
Или может есть другой способ передавать время заполнения формы?
delfenesВы не находите, что это оксюморон?
редактированием скрытых полей
Офлайн
0
Ок, как вытащить когда реквест свалился?
мне нужно чтобы админ сайта видел, когда задание сдано.
Отредактировано FishHook (Янв. 6, 2016 15:12:01)
Офлайн
568
delfenes
Ок, как вытащить когда реквест свалился?
datetime.datetime.now()
Офлайн
568
delfenesТак покажите ему, нахера делать поле скрытым, а потом спрашивать “как показать скрытое поле”.
мне нужно чтобы админ сайта видел, когда задание сдано
Офлайн
0
FishHookНет, не очевидно))))
Отредактировано delfenes (Янв. 6, 2016 15:24:00)
Офлайн
568
delfenes
delfenesВстречный вопрос, на кой хрен у тебя в модели написано это
А мне нужно время создания записи ВПОЛНЕ КОНКРЕТНОЙ
delfenesКакому пользователю? Зачем ты показываешь админу и пользователю одинаковые формы?
Хорошо, предположим я не скрою это поле. Но зафиг пользователю инфа о времени создания записи?
Офлайн
0
Так у меня с датой все норм. Она сохраняется! С моделью проблем нет.
Проблема посмотреть ее в админке админу. Почему я пользователям админку не показываю. Тут все норм. ЭЭЭ внимательно читай первый пост. Формы не одинаковые!
Для админки я беру данные из модели одной и основе нее же модели я строю форму (поля для формы). А как по-другому, если мне нужно именно эту модель заполнить?
У меня есть модель, на основе ее полей форма, которая показывается юзеру для заполнения задания. В админке из формы для админки 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)
Офлайн
568
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)
Офлайн
0
ЭЭЭЭ ты чего! в верхнем посте написано:
Админка:
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)
Офлайн