Как заполнить поля в самом CreateView - PullRequest
0 голосов
/ 23 марта 2019

Я создаю проект, и у меня есть одно сомнение, поэтому сайт, если для центра поддержки, где проект django регистрирует случай для пользователя после того, как пользователь заполняет общую форму.

Итак, я создал название модели Case, и в нем есть такие поля, как case_number, email и все такое.

Теперь в views.py я использую CBV CreateView для создания, сохранения пользовательской формы и создания простого номера дела.

Где я застрял, это случайный номер, который представляет собой 10-значное поле строки, должен быть создан случайным образом, но как мне сохранить его после того, как клиент завершит заполнение формы?

потому что все плохое упоминание в полях будет отображаться как ввод для customer, а case_number - это не то, что я хочу, чтобы клиент заполнил его, оно должно генерироваться автоматически.

Я считаю, что это можно сделать просто: -

r2 = [random.randint (0, 10), random.randint (0, 10), random.randint (0, 10), random.randint (0, 10), random.randint (0, 10) , random.randint (0, 10), random.randint (0, 10), random.randint (0, 10), random.randint (0, 10), random.randint (0, 10)]

case_number = ('' .join (str (x) для x в r2))

и в CBV CreateView позволит мне случайным образом создать число и сохранить его, но я хочу, чтобы это было сделано в бэкэнде, поэтому я не могу упомянуть его в представлении создания,

Это просто сомнение, я уже попробовал.

models.py

class Case:
    case_number = models.CharField(max_length=10)
    issue=models.TextField()
    product=models.CharField(max_field=100)

    def get_absolute_url(self):
        return reverse('case:single')

Views.py

class CaseCreation(CreateView):
    model=Case
    fields=('issue', 'product')
    r2=[random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10)]

    self.case_number = (''.join(str(x) for x in r2))

Ожидаемый результат заключается в том, что я хочу, чтобы случайным образом 10-значный номер был записан для клиента и сохранен в БД

БД - sql lite3.

1 Ответ

0 голосов
/ 26 марта 2019

Хорошо, просто, чтобы вы, ребята, знали, что я наконец-то придумал ответ,

Я определил логику создания дел в models.py, как показано ниже.

def case_generation(self):
    r2=[random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10)]
    self.case_number = (''.join(str(x) for x in r2))
    self.save()

Теперь в views.py я определил функцию и вызвал функцию, определенную в models.py и save.

@login_required
def case_number_generation(request, pk):
    case = get_object_or_404(Case, pk=pk)
    case.case_generation()
    return redirect("cases:single_pk", pk=case.pk)

между ними я определил urls.py таким образом, что один случай, когда пользователь генерирует регистр, функции будут вызываться сами по себе.

Если вам интересно посмотреть полный код, не беспокойтесь, дайте мне знать, если я напишу здесь, если потребуется. ;)

...