Уведомления

Группа в Telegram: @pythonsu

#1 Март 14, 2011 08:41:13

Raziel
От:
Зарегистрирован: 2011-03-14
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Генератор отчетов

Друзья блин такая проблема нужно сделать генератор отчетов(грубо говоря он будет страницу в ексель перегонять это не проблема) проблема с описанием модели заранее неизвестно что и как будет устроенно что вызывает лично у меня проблемы если бы все было одинаково описал бы модель и все наслаждайся.

По условию у нас есть 3 таблицы: основная структурное подразделение и название отчета
в первых двух столбцах основной храняться foreign. А остальные поля их штук 50 будет им как раз им нужно дать имена.

а чуть не забыл получается мне еще понадобиться сделать свобный отчет по всей таблице от сюда возникает проблема тем что поля еще и впоследствии менять нельзя.

Имена полей по идеи должен менять только админ(он собственно делает шапку таблицы)


Возник вопрос можно ли как то динамически дать имя столбцу? если нет то каким макаром можно решить эту задачу буду благодарен за любые советы



Офлайн

#2 Март 14, 2011 14:08:26

appetito
От:
Зарегистрирован: 2010-09-28
Сообщения: 147
Репутация: +  2  -
Профиль   Отправить e-mail  

Генератор отчетов

совет первый: яснее сформулируйте задачу, ничего не понятно что вы тут написали



Офлайн

#3 Март 14, 2011 14:40:41

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Генератор отчетов

Совет второй: используйте запятые.

Офлайн

#4 Март 14, 2011 20:30:37

Raziel
От:
Зарегистрирован: 2011-03-14
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Генератор отчетов

Ладно ща попробую все красиво сформулировать.

Есть два интерфейса админка и пользовательский.
Пользователь заполняет форму, которая представляет из себя следующее: вниз спадающий спискок “Наименование структурного подразделения”, после выбора этого поля становится видным второй вниз спадающий список “Название отчета”.
После должна отрисоваться таблица которую внес администратор.

Вопросы:
1) можно ли вобще внести изменения в БД(не заполнить а именно что то создать, просто вроде как из прочитанной документации я понял, что мы должны все заранее создать(описать в models.py), или я где то ошибся?
2) как лучше всего реализовать БД для этой задачи, пока что я могу точно выделить две таблицы “название структурных подразделений” и “названия отчетов”



Офлайн

#5 Март 14, 2011 23:00:16

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

Генератор отчетов

Задача - типичный classifieds - в реляционной алгебре решается мягко говоря плохо, но решается. Способов решения есть несколько и все следуют примерно такой схеме:

1. вводится описание схемы отчета, как правило это таблица следующего вида:
- fk на тип отчета (у вас “названия отчетов”)
- номер поля в отчете
- наименование поля в отчете
- тип поля (как правило выборка из нескольких заранее определенных возможных типов)

2. Вводится таблица отчетов с полями: тип отчета, дата заполнения отчета, кто заполнил и т.д. - в общем соль и сахар добавляете по вкусу.

3. Вводится таблица значений отчетов вида
- fk на поле (определен в первом пункте)
- fk на отчет (определен во втором пункте)
- номер записи в отчете
- значение (можно или тупо использовать строки в которые все конвертируется при сохранении, ну или использовать несколько полей для хранения значения каждого типа)

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

Лучше конечно для таких случаев использовать документоориентированную БД, конечно, если это возможно - там решение получится проще.



Офлайн

#6 Март 16, 2011 14:36:34

Raziel
От:
Зарегистрирован: 2011-03-14
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Генератор отчетов

Сори за мою тупость но помогите немного с моделью ибо я просто не понимаю как это реализовать.

from django.db import models
class struct_pod(models.Model):
Name_pod = models.CharField(max_length=50)
def __Unicode__ (self):
return self.Name_pod
class name_otchet(models.Model):
name_otchet=models.CharField(max_length=50)
def __Unicode__ (self):
return self.name_otchet
class shema_otchet (models.Model):
struct_pod=models.ForeignKey(struct_pod)
name_otch=models.ForeignKey(name_otchet)
name_pol=models.CharField(max_length=200)
tip_pol=
def __Unicode__ (self):
return u'%s %s' % (self.name_pol, self.soder_pol)
class Meta:
ordering=['name_pol']
class tab_znach (models.Model):
shem_otch=models.ForeignKey(shema_otchet)
otchet=models.ForeignKey(name_otchet)
nomer_zap=
znachenie=
Вроде как модель, должна иметь такой вид, я правильно понял? Единственно не понял как описать tip_pol, nomer_zap и znachenie.
Как я понял вы предлагаете для tip_pol описать следующим образом:
	Tip_CHOICES= (
('','Числовое'),
('','Текст'),
)
Tip_pol = models.CharField(max_length=100, choices=Tip_CHOICES)
однако я не совсем понял как описать кортеж, немогли бы пояснить?



Офлайн

#7 Март 20, 2011 19:47:56

Raziel
От:
Зарегистрирован: 2011-03-14
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Генератор отчетов

блин ну так что сделать то с моделью кто нить подскажет?



Офлайн

#8 Март 20, 2011 21:43:55

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

Офлайн

#9 Март 21, 2011 09:27:18

Raziel
От:
Зарегистрирован: 2011-03-14
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Генератор отчетов

пля ну спасибо документацию по django я неделю уже курю!

ziro предложил решение я написал модель под это решение, просто я не совсем понял как будут устроены ТРИ поля, и спросил может кто понял и скажет мне!

я же не попросил всю модель мне написать, я прекрасно понимаю что это моя задача а не ваша



Офлайн

#10 Март 21, 2011 10:24:08

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

Генератор отчетов

У тебя ошибки, как в русской речи, так и в коде (ошибки синтаксического, семантического плана).
Думааааа е шь прияЯТно сМотр еть вот тако
Е где Нич ЕгГго не Ясно



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version