简体   繁体   English

基于Django类的视图表单不会将数据保存到数据库

[英]Django Class Based View Form Won't Save Data To Database

I can not get my form data to commit to my sqlite3 database. 我无法将表单数据提交到sqlite3数据库。 I don't see any errors. 我没有看到任何错误。 I can commit data through admin, but not through my own controller using form. 我可以通过admin提交数据,但不能通过使用表单的我自己的控制器提交数据。 I've tried many diff. 我尝试了很多差异。 combos and still no success. 连击仍然没有成功。 I would like to use class based view, please. 我想使用基于类的视图。 Everything works, the form just won't save the data to database. 一切正常,表格不会将数据保存到数据库。 There are no errors. 没有错误。

url: url(r'^create/$', CreateRequest.as_view()) 网址: url(r'^create/$', CreateRequest.as_view())

forms.py: forms.py:

class CreateForm(ModelForm):
    date_due = forms.DateTimeField(widget=widgets.AdminSplitDateTime)
    class Meta:
        model = Request
        fields = ['region', 'user_assigned', 'user_requester',  'description']

views.py: views.py:

class CreateRequest(LoginRequiredMixin, CreateView):
    model = Request
    fields = ['region', 'user_assigned', 'user_requester', 'date_due', 'description']
    template_name = "requests_app/createRequest.html"
    form_class = CreateForm
    success_url = '/'

    def form_valid(self, form):
        objects = form.save()
        return super(CreateRequest, self).form_valid(form)

models.py: models.py:

class Request(models.Model):
    region = models.ForeignKey(Region)
    completed = models.BooleanField(default=False)
    user_assigned = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True, related_name='user_assigned')
    user_requester = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='user_requester')
    date_due = models.DateTimeField()
    date_completed = models.DateTimeField(null=True, blank=True)
    description = models.CharField(max_length=500)

    objects = models.Manager()
    open_requests = OpenRequests()
    completed_requests = CompletedRequests()

    def mark_completed(self):
        if not self.completed:
            self.completed = True
            self.date_completed = datetime.datetime.now()

index.html: index.html的:

<h1>hi</h1>
<form action="/create/" method="post">
    {% csrf_token %}
    {{ form.non_field_errors }}
    <div class="fieldWrapper">
        {{ form.region.errors }}
        <label for="id_region">Region</label>
        {{ form.region }}
    </div>
    <div class="fieldWrapper">
        {{ form.user_assigned.errors }}
        <label for="id_user_assigned">User Assigned</label>
        {{ form.user_assigned }}
    </div>
    <div class="fieldWrapper">
        {{ form.user_requester.errors }}
        <label for="id_user_requester">user_requester: </label>
        {{ form.user_requester }}
    </div>
    <div class="fieldWrapper">
        <p> {{ form.date_due.errors.as_text }} </p>
        <label for="id_date_due">Due Date</label>
        {{ form.date_due }}
    </div>
     <div class="fieldWrapper">
        {{ form.description.errors }}
        <label for="id_description">Descr.</label>
        {{ form.description }}
    </div>

    <p><input type="submit" value="Submit Request" /></p>
    {% if form.non_field_errors %}
        {% for err in form%}
        <div class="fieldWrapper">
          <p class="form-error">{{ err }}</p>
          <p class="form-error">{{ err.label_tag }} {{ field }}</p>
      </div>
        {% endfor %}
    {% endif %}
</form>

{% endblock %}

in views.py you don't need this line: objects = form.save() It can be 在views.py中,您不需要此行:objects = form.save()可以是

class ContaktCreateView(CreateView):

model = Contakt
form_class = ContaktForm
template_name = "www/www_contakt.html"
success_url = '/thanks/'

def form_valid(self, form):
    return super(ContaktCreateView, self).form_valid(form) 

Also I'm not using action in form action="/create/" method="post" 另外,我没有使用动作action =“ / create /” method =“ post”形式的动作

You are calling this html form via your line in urls.py: 您正在通过urls.py中的行调用此html表单:

url(r'^create/$', CreateRequest.as_view())

which is using your CreateRequest view which is using your index.html form file. 使用的是CreateRequest视图,使用的是index.html表单文件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM