Django 数据保存在错误的模型中 为什么将模型 B、C 数据保存在模型 A 中

问题描述 投票:0回答:1

我有 3 个 django 模型

CustomerDetail
CarrierForm
InfluencerModel
当我尝试通过不同不同页面的表单将数据保存在
CarrierForm
InfluencerModel
中时,它会保存在模型中
CustomerDetail
为什么发生这种情况告诉我我什么我做错了吗?

这是模型

class CustomerDetail(models.Model):
    full_name             = models.CharField(max_length=255, null=False, blank=False)
    email                 = models.EmailField(max_length=255, null=False, blank=False)
    contact_number        = models.CharField(max_length=10, null=False, blank=False)
    message               = models.TextField(null=False, blank=False)
    visited_on            = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.email


class CarrierForm(models.Model):
    full_name             = models.CharField(max_length=255, null=False, blank=False)
    email                 = models.EmailField(max_length=255, null=False, blank=False)
    contact_number        = models.CharField(max_length=10, null=False, blank=False)
    upload_resume         = models.FileField(null=False, blank=False)
    message               = models.TextField(null=True, blank=True)
    visited_on            = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.email


class InfluencerModel(models.Model):
    full_name = models.CharField(max_length=255, null=False, blank=False)
    email = models.EmailField(max_length=255, null=False, blank=False)
    contact_number = models.CharField(max_length=10, null=False, blank=False)
    instagram_id   = models.CharField(max_length=50, null=False, blank=False)
    message = models.TextField(null=True, blank=True)
    visited_on = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.email

这里是视图

class HomeView(CreateView):
    success_url = reverse_lazy('home')
    model = CustomerDetail
    template_name = 'home/home.html'
    fields = ['full_name', 'email', 'contact_number', 'message']

    def get_context_data(self, *args, **kwargs):
        context = super(HomeView, self).get_context_data(*args, **kwargs)
        context['files'] = HomeVideoAndImage.objects.all()
        context['galleryImages'] = HomeGallery.objects.all()
        context['reviewImages'] = Review.objects.all()
        return context


class CarrierFormView(CreateView):
    model = CarrierForm
    template_name = 'home/carrier.html'
    fields = ['full_name', 'email', 'contact_number', 'upload_resume', 'message']

    def get_context_data(self, *args, **kwargs):
        context = super(CarrierFormView, self).get_context_data(*args, **kwargs)
        return context


class InfluencersPageView(CreateView):
    model = InfluencerModel
    template_name = 'home/influencers.html'
    fields = ['full_name', 'email', 'contact_number', 'instagram_id', 'message']


    def get_context_data(self, *args, **kwargs):
        context = super(InfluencersPageView, self).get_context_data(*args, **kwargs)
        return context

像这样渲染表单

<form action="{% url 'home' %}" role="form" class="php-email-form" method="post"> {% csrf_token %}
      <div class="row">
      {{ form.as_table }}
        <div class="col-md-6 form-group">
          {{ form.full_name.errors }}
          {{form.full_name|as_crispy_field}}
        </div>

        <div class="col-md-6 form-group mt-3 mt-md-0">
             {{ form.email.errors }}
             {{form.email|as_crispy_field}}
<!--                  <input type="email" class="form-control" name="email" id="email" placeholder="Your Email" required>-->
        </div>


      <div class="form-group col-md-6">
        {{ form.contact_number.errors }}
        {{form.contact_number|as_crispy_field}}
<!--                <input type="text" class="form-control" name="subject" id="subject" placeholder="Subject" required>-->
      </div>

      <div class="form-group col-md-6">
        {{ form.instagram_id.errors }}
        {{form.instagram_id|as_crispy_field}}
<!--                <input type="text" class="form-control" name="subject" id="subject" placeholder="Subject" required>-->
      </div>

          </div>



      <div class="form-group mt-3" rows="7">
        {{ form.message.errors }}
        {{form.message|as_crispy_field}}
<!--                <textarea class="form-control" name="message" rows="7" placeholder="Message" required></textarea>-->
      </div>
<!--              <div class="my-3">-->
<!--                <div class="loading">Loading</div>-->
<!--                <div class="error-message"></div>-->
<!--                <div class="sent-message">Your message has been sent. Thank you!</div>-->
<!--              </div>-->
       <div class="text-center">
        <button type="submit" class="btn btn-outline-secondary" style="background-color:#FF512F; color: white">Send Message</button>
     </div>
<!--              <div class="text-center"><button type="submit">Send Message</button></div>-->
    </form>
python html django django-models django-forms
1个回答
0
投票

由于您只提供了一个模板,我假设您对您提到的所有这些视图使用相同的表单。 您的表单操作指向相同的 url

home
。在
<form action="{% url 'home' %}" role="form" class="php-email-form" method="post"> {% csrf_token %} 
。相应地更改为您希望处理表单的视图。

© www.soinside.com 2019 - 2024. All rights reserved.