• Как передать экземпляр класса между из views.py в forms.py в django?

    @justdani Автор вопроса
    Сергей Горностаев,
    views.py
    bc = BCForm()
                    dep = DepartmentForm(initial={'Department': statement_list})
                    chk_point = CheckPointForm()
                    chk_list = CheckListForm()
                    date_of_chk_list = DateOFCheckListForm()
                    return render(request, 'layout/reporters/create_template.html', {'bc': bc,
                                                                                     'dep': dep,
                                                                                     'chkpoint': chk_point,
                                                                                     'chklist': chk_list,
                                                                                     'dateofchklist': date_of_chk_list,
                                                                                     'user': user,
                                                                                     'date': date})

    forms.py
    class DepartmentForm(forms.Form):
    
        Department = forms.ChoiceField()
        Leader = forms.CharField()
        kpi = forms.IntegerField()

    Не работает. Что я не так делаю?
  • Как передать экземпляр класса между из views.py в forms.py в django?

    @justdani Автор вопроса
    Сергей Горностаев, Объясняю, создал класс, разместил его в models.py что бы не делать жирную вьюшку, создал экземпляр этого класса во вьюхе передав в конструктор авторизационные данные из запроса(Коннект к ActiveDirectory). Далее вызываю несколько методов этого класса. Вывод одного метода - список, который надо передать в forms.py что в последствии передать его в Choices в ChoiceField. Что здесь сумбурного не пойму? Я спросил, возможно ли передать экземпляр класса созданый во views.py в forms.py.
  • Не могу заполнить связную таблицу в djangoю. Что не так?

    @justdani Автор вопроса
    Ростислав Григорьев, Сделал так, всё заработало

    from django.contrib import messages
    from django.shortcuts import render, redirect
    from .forms import BandForm, RepetitionForm
    from .models import Band, Repetition, User
    
    
    def band_form(request):
        if request.method == 'POST':
            user = User()
            band = Band()
            rep = Repetition()
            _band_form = BandForm(request.POST)
            _repetition_form = RepetitionForm(request.POST)
            if _band_form.is_valid() and _repetition_form.is_valid():
                data = _band_form.cleaned_data
                data_rep = _repetition_form.cleaned_data
                band_name = data['band_name']
                band.band_name = band_name
                password = data['password']
                idi = user_reg(band_name, password, user)
                band.user = idi
                band.phone = data['phone']
                band.save()
                rep.band = band
                rep.start_time = data_rep['start_time']
                rep.end_time = data_rep['end_time']
                rep.date = data_rep['date']
                rep.save()
                return redirect('/')
            else:
                print("Форма заполнена не корректно")
        else:
            _band_form = BandForm()
            _repetition_form = RepetitionForm()
        return render(request, 'auth.html', {'band_form': _band_form, 'rep_form': _repetition_form})
    
    
    def user_reg(username, password, user):
        user.username = username
        user.set_password(password)
        user.save()
        return user
  • Не могу заполнить связную таблицу в djangoю. Что не так?

    @justdani Автор вопроса
    Ростислав Григорьев, Попробовал так, не заработало

    from django.contrib import messages
    from django.shortcuts import render, redirect
    from .forms import BandForm, RepetitionForm
    from .models import Band, Repetition, User
    
    
    def band_form(request):
        if request.method == 'POST':
            user = User()
            band = Band()
            _band_form = BandForm(request.POST)
            # _repetition_form = RepetitionForm(request.POST)
            if _band_form.is_valid():
                data = _band_form.cleaned_data
                band_name = data['band_name']
                password = data['password']
                idi = user_reg(band_name, password, user)
                band.user = idi
                band.phone = data['phone']
                band.save()
                return redirect('/')
            else:
                messages.error(request, 'Whoo!')
        else:
            _band_form = BandForm()
            _repetition_form = RepetitionForm()
        return render(request, 'auth.html', {'band_form': _band_form})
    
    
    def user_reg(username, password, user):
        user.username = username
        user.set_password(password)
        user.save()
        return user
  • Не могу заполнить связную таблицу в djangoю. Что не так?

    @justdani Автор вопроса
    Ростислав Григорьев, У меня ещё проблема в том, что модель User расширяется моделью Band и заполняются формы в одном шаблоне. Как сделать создание User отдельной функцией если post запрос один со всеми данными сразу? Может тогда вызвать функцию внутри вьюхи и передать в неё необходимые для user параметры, а возвращать id и подставлять id в user который onetoonefield у Band?
  • Не могу заполнить связную таблицу в djangoю. Что не так?

    @justdani Автор вопроса
    Ростислав Григорьев, ещё вопрос, а как во вьюху передать вообще параметром (из отдельной функции), для этого же она должна где то вызываться?
  • Не могу заполнить связную таблицу в djangoю. Что не так?

    @justdani Автор вопроса
    Не до конца понимаю как передать экземпляр одной модели в другую.
  • Не могу заполнить связную таблицу в djangoю. Что не так?

    @justdani Автор вопроса
    В мета у формы BandForm для fields не указано поле user, значит сохраняться оно не будет даже если передать такой параметр
    Так поле уникальное же. Если его указать в fields оно рендерится и не даёт вообще ничего создать. После того как я убрал создание экземпляра band.

    from django.contrib import messages
    from django.shortcuts import render, redirect
    from .forms import BandForm, RepetitionForm
    from .models import Band, Repetition, User
    
    
    def band_form(request):
        if request.method == 'POST':
            _band_form = BandForm(request.POST)
            _repetition_form = RepetitionForm(request.POST)
            if _band_form.is_valid():
                _band_form.save()
                return redirect('/')
            else:
                messages.error(request, 'Whoo!')
        else:
            _band_form = BandForm()
            _repetition_form = RepetitionForm()
        return render(request, 'auth.html', {'band_form': _band_form, 'repetition_form': _repetition_form})


    from django import forms
    from .models import User, Repetition, Band
    
    
    class UserForm(forms.ModelForm):
        class Meta:
            model = User
            fields = ('username', 'password')
    
    
    class BandForm(forms.ModelForm):
        class Meta:
            model = Band
            fields = ('band_name', 'phone', 'vk_page', 'user')
        password = forms.CharField(widget=forms.PasswordInput, label="Пароль")
    
    
    class RepetitionForm(forms.ModelForm):
        class Meta:
            model = Repetition
            fields = ('start_time', 'end_time', 'date')
  • Как исправить ошибку при расширения Django User Model?

    @justdani
    Виктор Юрченко, Ну допустим, если не расширять модель пользователя, а расширить любую другую модель? Я уже какой день бьюсь и не могу заполнить 2 таблицы. Получилось только создать кортеж в расширяющей таблице(с помощью сигналов post_save) а вот наполнить её никак не получилось. Или создать с заданными атрибутами. Бьюсь всё бьюсь.