Как передать данные из Django Шаблон для просмотра - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть шаблон, в котором отображаются сведения о клиенте, а также кнопка «Создать заказ» внизу. Это должно привести пользователя на страницу формы создания потенциального клиента, где должно быть предварительно выбрано поле клиента.

Я новичок в django. Основываясь на ответах на предыдущие аналогичные вопросы, я пришел с кодом ниже. Но когда я нажимаю кнопку «Создать заказ», URL-адрес изменяется с «http://127.0.0.1: 8000 / sales / customer / 21 » на «http://127.0.0.1: 8000 / sales / customer / 21 /? customer_id = 21", но на странице ничего не происходит. Я также пытался использовать метод POST и токен csrf, но он дает HTTP ERROR 405. Могут ли некоторые помочь, пожалуйста, здесь.

Кроме того, у меня есть отдельное представление для создания Lead, что является своего рода дублированием CreateView for Lead , И я верю, что это не так, как должно быть. Какой способ объединить их в единое представление.

Ниже приведены фрагменты кода.

Models.py

class Customer(models.Model):
    name = models.CharField(max_length=256)
    email = models.EmailField(unique=True)
    phone = models.PositiveIntegerField()

class Lead(models.Model):
    customer = models.ForeignKey(Customer,related_name='Leads',on_delete=models.PROTECT)
    destinations = models.CharField(max_length=256)
    lead_source = models.CharField(max_length=256,choices=lead_source_choices,default='FNF')
    lead_source_id = models.CharField(max_length=25,blank=True)
    lead_status = models.CharField(max_length=25,choices=lead_status_choices,default='NEW')
    remarks = models.TextField(blank=True)
    trip_id = models.CharField(max_length=10,editable=False,unique=True,default="IN"+uuid.uuid1().hex[:5].upper())
    creation_date = models.DateField(auto_now=True)

Forms.py

class LeadForm(forms.ModelForm):
    class Meta:
        model = Lead
        fields = ('customer','destinations','lead_source','lead_source_id','lead_status','remarks')

class LeadFromCustomerForm(forms.ModelForm):
    class Meta:
        model = Lead
        fields = ('destinations','lead_source','lead_source_id','lead_status','remarks')

Шаблон

  <form method="GET">
    <input type="hidden" name="customer_id" value="{{customer.id}}">
    <a href="{% url 'SalesApp:lead_create_from_customer' %}">
      <button class="btn btn-warning btn-lg float-right" type="submit">Create Lead</button></a>
  </form>

Urls.py

path('lead/create/',views.LeadCreateView.as_view(),name='lead_create'),
path('lead/create/customer/',views.LeadCreateFromCustomerView.as_view(),name='lead_create_from_customer')

Views.py

class LeadCreateView(LoginRequiredMixin,UserPassesTestMixin,CreateView):
    form_class = LeadForm
    model = Lead
    def test_func(self):
        return self.request.user.groups.filter(name='Sales').exists()

class LeadCreateFromCustomerView(LoginRequiredMixin,UserPassesTestMixin,CreateView):
    form_class = LeadFromCustomerForm
    model = Lead
    def test_func(self):
        return self.request.user.groups.filter(name='Sales').exists()
    def form_valid(self,form):
        customer_id = self.request.GET.get("value")
        form.instance.customer = Customer.objects.get(id=customer_id)
        return super(LeadCreateFromCustomerView,self).form_valid(form)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...