• Как в forms получить разный initial модели, если virew одна, форма одна, разные urls?

    @paevlk2007 Автор вопроса
    Проблема решена:
    models.py
    class Models_view(models.Model):
        view_name = models.CharField(max_length=100)

    class Model(models.Model):
        name = models.CharField(max_length=100)
        models_views =  models.ForeignKey(Models_view)

    forms.py
    class ModelForm(forms.ModelForm):
        class Meta:
            model = Model

    views.py
    def add(request, view=None, template_name="lbforum/form_add.html" ):
        if request.method == 'POST':
            f = ModelForm(request.POST)
            if f.is_valid():
                f.save()
                return HttpResponseRedirect(reverse("models"))
        else:
            if view == 1:
                f = ModelForm(initial={'models_views': Models_view.objects.get(id=1)}) # в этом вся фишка
            else:
                f = ModelForm(initial={'models_views': Models_view.objects.get(id=2)}) # в этом вся фишка
        ctx = {'form': f}
        return render(request, template_name, ctx)

    urls.py
    url(r'^add1/$', views.add, {'view': 1}, name='add1'), 
    url(r'^add2/$', views.add, name='add2'),


    Теперь есть две ссылки на одну views, первая форма создается и заполняется (initial) полем models_views с id=1, вторая форма с models_views id=2.

    Может есть более оптимальное решение
    Ответ написан
    Комментировать
  • Как организовать поиск по нескольким полям ForeignKey?

    @paevlk2007 Автор вопроса
    Говнокод в связи с тем, что:
    В модели "Accessories" должно быть не менее 5 материалов (модель "Accessories_material"), в модели "Accessories" выбирается материал (поле "accessories_material1" ) и заполняется поле расход материала (поле "accessories_materialr1"). При сохранении формы модели "Accessories" происходит списание (уменьшение) материала:

    if f.is_valid():
                if accessories_id:
                    f.save()
                else:
                    accessories = f.save(commit=False)
                    accessories.posted_by = request.user
                    if accessories.accessories_material:
                        accessories.accessories_material.accessories_material_col_all = ((accessories.accessories_material.accessories_material_col_all) - (accessories.accessories_material_col_ex))
                        accessories.accessories_material.save()
                        accessories.save()
                ...... и тд


    модель "Accessories_materia": (в модель вносится наименование и приход материала, через форму "Accessories" заполняется поле остатки материала "accessories_material_col_all" (приход (Accessories_materia -> accessories_material_col) минус расход (Accessories -> accessories_materialr1) = остаток материала
    (Accessories_materia -> accessories_material_col_all.)


    class Accessories_material(models.Model):
        accessories_material_date = models.DateField(u"Дата прихода")
        accessories_material = models.CharField("Материал:", max_length=100)
        accessories_material_col = models.IntegerField(u"Приход Кол-во", default=0)
        accessories_material_col_all = models.IntegerField(u"Остатки Кол-во", default=0)
    
    class Accessories(models.Model):
        created_on = models.DateTimeField(u"Дата создания", auto_now_add=True)
        accessories_plot = models.ForeignKey(Accessories_plot, verbose_name='Участок')
        accessories_material1 =  models.ForeignKey(Accessories_material)
        accessories_materialr1 = models.IntegerField(u"Расход Кол-во1")
        accessories_material2 =  models.ForeignKey(Accessories_material)
        accessories_materialr2 = models.IntegerField(u"Расход Кол-во2")
        accessories_material3 =  models.ForeignKey(Accessories_material)
        accessories_materialr3 = models.IntegerField(u"Расход Кол-во3")
        accessories_material4 =  models.ForeignKey(Accessories_material)
        accessories_materialr4 = models.IntegerField(u"Расход Кол-во4")
        accessories_material5 =  models.ForeignKey(Accessories_materia)
        accessories_materialr5 = models.IntegerField(u"Расход Кол-во5")


    Понимаю что ГОВНОАДОВЫЙ КОД... но для это здесь и написал, чтобы попросить совета как улучшить код. Как с помощью ManyToMany списывать кол-во материала???
    Ответ написан
    Комментировать
  • Django - как сделать списание количества из одной модели в другую?

    @paevlk2007 Автор вопроса
    Ау
    Ответ написан
    Комментировать
  • Django, как сделать отчет с группировкой по вертикали и горизонтали, как в Excel - Сводная таблица?

    @paevlk2007 Автор вопроса
    Проблема решена с помощью django-pandas.
    Ответ написан
    Комментировать
  • Django send sms

    @paevlk2007 Автор вопроса
    Сделал так:
    - подключил 'smsaero',
    - в форме добавления нового события, добавил send_sms, в моем случает:

    title = title.encode('utf-8')
     start = int(mktime(start.timetuple()))
     send_sms((resp.profile.phone), (title), '2', (start))


    Когда пользователь вводит новое событие в календарь, одновременно создается sms уведомление:
    с телефоном пользователя;
    заголовком сообщения;
    "2" - Подпись отправителя;
    датой (время) начала события.

    После этого готовая SMS ждем своего исполнения!

    Минус: если пользователь ошибся в датой, то SMS не удалить, либо необходимо заходить в личный кабинет SMSAero и удалять!
    Ответ написан
    Комментировать
  • Django - Отправка email на определенную дату (событие)?

    @paevlk2007 Автор вопроса
    Сделал так:
    - подключил 'smsaero',
    - в форме добавления нового события, добавил send_sms, в моем случает:

    title = title.encode('utf-8')
     start = int(mktime(start.timetuple()))
     send_sms((resp.profile.phone), (title), '2', (start))


    Когда пользователь вводит новое событие в календарь, одновременно создается sms уведомление:
    с телефоном пользователя;
    заголовком сообщения;
    "2" - Подпись отправителя;
    датой (время) начала события.

    После этого готовая SMS ждем своего исполнения!

    Минус: если пользователь ошибся в датой, то SMS не удалить, либо необходимо заходить в личный кабинет SMSAero и удалять!
    Ответ написан
    Комментировать