Raziel
Март 14, 2011 08:41:13
Друзья блин такая проблема нужно сделать генератор отчетов(грубо говоря он будет страницу в ексель перегонять это не проблема) проблема с описанием модели заранее неизвестно что и как будет устроенно что вызывает лично у меня проблемы если бы все было одинаково описал бы модель и все наслаждайся.
По условию у нас есть 3 таблицы: основная структурное подразделение и название отчета
в первых двух столбцах основной храняться foreign. А остальные поля их штук 50 будет им как раз им нужно дать имена.
а чуть не забыл получается мне еще понадобиться сделать свобный отчет по всей таблице от сюда возникает проблема тем что поля еще и впоследствии менять нельзя.
Имена полей по идеи должен менять только админ(он собственно делает шапку таблицы)
Возник вопрос можно ли как то динамически дать имя столбцу? если нет то каким макаром можно решить эту задачу буду благодарен за любые советы
appetito
Март 14, 2011 14:08:26
совет первый: яснее сформулируйте задачу, ничего не понятно что вы тут написали
Ferroman
Март 14, 2011 14:40:41
Совет второй: используйте запятые.
Raziel
Март 14, 2011 20:30:37
Ладно ща попробую все красиво сформулировать.
Есть два интерфейса админка и пользовательский.
Пользователь заполняет форму, которая представляет из себя следующее: вниз спадающий спискок “Наименование структурного подразделения”, после выбора этого поля становится видным второй вниз спадающий список “Название отчета”.
После должна отрисоваться таблица которую внес администратор.
Вопросы:
1) можно ли вобще внести изменения в БД(не заполнить а именно что то создать, просто вроде как из прочитанной документации я понял, что мы должны все заранее создать(описать в models.py), или я где то ошибся?
2) как лучше всего реализовать БД для этой задачи, пока что я могу точно выделить две таблицы “название структурных подразделений” и “названия отчетов”
ziro
Март 14, 2011 23:00:16
Задача - типичный classifieds - в реляционной алгебре решается мягко говоря плохо, но решается. Способов решения есть несколько и все следуют примерно такой схеме:
1. вводится описание схемы отчета, как правило это таблица следующего вида:
- fk на тип отчета (у вас “названия отчетов”)
- номер поля в отчете
- наименование поля в отчете
- тип поля (как правило выборка из нескольких заранее определенных возможных типов)
2. Вводится таблица отчетов с полями: тип отчета, дата заполнения отчета, кто заполнил и т.д. - в общем соль и сахар добавляете по вкусу.
3. Вводится таблица значений отчетов вида
- fk на поле (определен в первом пункте)
- fk на отчет (определен во втором пункте)
- номер записи в отчете
- значение (можно или тупо использовать строки в которые все конвертируется при сохранении, ну или использовать несколько полей для хранения значения каждого типа)
Это как бы строгое реляционное решение, которое в большинстве случаев страшно тормозит, поэтому придумывают различные ухищрения, связанные с денормализацией.
Лучше конечно для таких случаев использовать документоориентированную БД, конечно, если это возможно - там решение получится проще.
Raziel
Март 16, 2011 14:36:34
Сори за мою тупость но помогите немного с моделью ибо я просто не понимаю как это реализовать.
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)
однако я не совсем понял как описать кортеж, немогли бы пояснить?
Raziel
Март 20, 2011 19:47:56
блин ну так что сделать то с моделью кто нить подскажет?
vaxXxa
Март 20, 2011 21:43:55
Raziel
Март 21, 2011 09:27:18
пля ну спасибо документацию по django я неделю уже курю!
ziro предложил решение я написал модель под это решение, просто я не совсем понял как будут устроены ТРИ поля, и спросил может кто понял и скажет мне!
я же не попросил всю модель мне написать, я прекрасно понимаю что это моя задача а не ваша
vaxXxa
Март 21, 2011 10:24:08
У тебя ошибки, как в русской речи, так и в коде (ошибки синтаксического, семантического плана).
Думааааа е шь прияЯТно сМотр еть вот тако
Е где Нич ЕгГго не Ясно