Как передать значение таблицы в другой экземпляр модели в django?

Я хочу передать значение базы данных в другую модель, используя метод экземпляра. и затем сохранить его в БД. Но когда я нажимаю submit, значение не сохраняется в БД.

вот мой код model.py

import datetime

from django.db import models
from django.contrib.auth.models import User


class Customer(models.Model):
      id_number = models.CharField(max_length=15, null=False)
      name = models.CharField(max_length=100, null=False)
      customer_order = models.CharField(max_length=100, null=False)
      order_date = models.DateTimeField(auto_now_add=False, auto_now=False, blank=True, null=True, auto_created=False)
      phone_number = models.CharField(max_length=20, null=True)
      

      def __str__(self):
          return self.name

class SpecialOffer(models.Model):
      customer = models.ForeignKey(Customer, null=True, on_delete=models.CASCADE)
      order_date = models.DateTimeField(auto_now_add=False, auto_now=False, blank=True, null=True, auto_created=False)
      phone_number = models.CharField(max_length=20, null=True)
      customer_prizes = models.CharField(max_length=100, null=True)          

      def __str__(self):
          return self.customer

здесь есть две модели,

для form.py вот коды :

from django import forms

from .models import *


class CustomerForm(forms.ModelForm):

    class Meta:
          model = Customer
          fields = ['id_number', 'name', 'customer_order', 'order_date', 'phone_number']
          widgets = {
                     'id_number':forms.TextInput(attrs={'class':'form-control', 'type':'text'}),
                     'name': forms.TextInput(attrs={'class': 'form-control', 'type': 'text'}),
                     'customer_order': forms.TextInput(attrs={'class':'form-control', 'type':'text'}),
                     'order_date': forms.DateTimeInput(attrs={'class': 'form-control datetime-local', 'type': 'text', 'data-target': '#datetimepicker', 'id':'datetimepicker'}),
                     'phone_number' : forms.TextInput(attrs={'class':'form-control', 'type':'text'}),  
                 }

class SpecialOfferForm(forms.ModelForm):

    class Meta:
          model = SpecialOffer
          fields = ['order_date', 'phone_number', 'customer_prizes']
          widgets = {
                     'order_date':forms.DateTimeInput(attrs={'class':'form-control', 'type':'text'}),
                     'phone_number': forms.TextInput(attrs={'class': 'form-control', 'type': 'text'},
                     'customer_prizes': forms.TextInput(attrs={'class':'form-control', 'type':'text'}),  
                 }

ok после получения формы и модели, я создаю входную форму для Customer в моем views.py

Здесь views.py

from .forms import *
from django.http import HttpResponseRedirect


def CustomerInput(request):
    
    customerForm = CustomerForm()
    if request.method == 'POST':
        customerForm = CustomerForm(request.POST or None)
        if customerForm.is_valid()
           return HttpResponseRedirect('/')
    return render(request, 'dashboard/customerform.html', {'customerForm': customerForm})

После некоторого ввода я отображаю данные в шаблоне Customer.

def CustomerTemplate(request):
    get_customer = Customer.objects.all()
    
    return render(request, 'dashboard/customerDisplay.html', {'get_customer': get_customer})

в шаблоне будет отображено значение данных из формы Customer Form, которое было введено.

Теперь мне нужно перейти к форме специального предложения из этого дисплея напрямую.

вот мой код views.py для формы SpecialOffer.

def SpecialOfferForm(request, pk):
    customer_data = Customer.objects.get(id=pk)
    form_offer = SpecialOfferForm()
    
    if request.method == 'POST':
       form_offer = SpecialOfferForm(request.POST, instance=customer_data)
       if form_offer.is_valid():
           obj = form_offer.save(commit=False)
           obj.order_date = customer_data.order_date
           obj.phone_number = customer_data.phone_number
           obj.save()
           return HttpResponseRedirect('/')

    context = {'form_offer':form_offer, 'customer_data': customer_data}
    return render(request, 'dashboard/specialForm.html', context)

и затем в специальном шаблоне предложения

<form action=" " method="POST">
  {% csrf_token %}
     <!-- Data From DB >
     <div class="card-body">
         <div class="form-group">
            <label>Customer Name</label>
              {{customer_data.name}}
     </div>

     <div class="card-body">
         <div class="form-group">
            <label>Customer Order</label>
              {{customer_data.customer_order}}
     </div>
     <div class="card-body">
         <div class="form-group">
            <label>**Customer Prizes**</label>
              {{form_offer.customer_prizes}}
     </div>

</form>

Теперь, когда я отправляю Призы для клиентов в моем шаблоне. Программа не сохраняет данные в таблицу(SpecialOffer). Мне нужно разделить модель Customer и модель SpecialOffer, но мне нужно передать некоторые данные из модели Customer в Special Offer.

Вернуться на верх