Django模型表单没有出现在管理员

时间:2017-05-30 20:25:12

标签: python django

我在django有一个反馈应用程序,它似乎工作正常,没有错误,我可以提交表单,这一切似乎工作,但我有我的模型注册到我的管理员但是当我提交表单我没有出现在我的管理员中。对不起,如果这是非常基本的我只是无法理解它,请帮助。

在我的models.py

class Feedback(models.Model):
    email = models.CharField(max_length=100)
    message = models.CharField(max_length=1000)

    def __unicode__(self):
        return self.title 

然后我将其传递给forms.py

class FeedbackModelForm(forms.ModelForm):
    class Meta:
        model = Feedback
        fields = ["email", "message"]

我的观点是

def feedbackform(request):
    form = FeedbackModelForm(request.Post or None)
    if form.is_valid():
        form.save()
    return render(request, "feedback.html", {"form": form})

现在我的html看起来像这样

{% block content %}

<div id="feedback">
    <div id="feedback-form" style='display:none;' class="col-xs-4 col-md-4 panel panel-default">
        <form method="POST" action="{{ form }}" class="form panel-body" role="form">{% csrf_token %}
            <div class="form-group">
                <input class="form-control" name="email" autofocus placeholder="Your e-mail" type="email" />
            </div>
            <div class="form-group">
                <textarea class="form-control" name="message" required placeholder="Please write your feedback here..." rows="5"></textarea>
            </div>
            <button class="btn btn-primary pull-right" type="submit">Send</button>
        </form>
    </div>
    <div id="feedback-tab">Feedback</div>
</div>

{% endblock %}

和我的管理员

from .models import Feedback
from .forms import FeedbackModelForm

class FeedbackAdmin(admin.ModelAdmin):
    form = FeedbackModelForm
admin.site.register(Feedback, FeedbackAdmin)

4 个答案:

答案 0 :(得分:1)

您已通过

class Dude:
    # same as before
    def whatsLeft(self):
        days = 35600 - self.daysByRetire()
        years = days / 356
        return days, years

# n = Dude()
print n.whatsLeft()[0]

作为动作属性,这是完全错误的。把它放在div里面

{{ form }}

这对你有用。

在action属性中以

的形式传递一个url
{{ form.as_p }} 

如果您想要保持在同一页面并通过视图重定向 你可以写

{% url 'home_page_example' %}

答案 1 :(得分:0)

告诉我们您是如何在管理员中注册模型的。

确保您明确配置表单,如此

class FeedbackAdmin(admin.ModelAdmin)
    form = FeedbackModelForm
admin.site.register(Feedback, FeedbackAdmin)

答案 2 :(得分:0)

您应该在def __unicode__(self):中退回电子邮件或邮件,而不是标题。

class Feedback(models.Model):
    email = models.CharField(max_length=100)
    message = models.CharField(max_length=1000)

    def __unicode__(self):
         return self.email

答案 3 :(得分:0)

我认为您应该检查视图当前是否正在保存您的反馈。

尝试检查数据库或在manage.py shell中检查在视图中提交反馈时len(Feedback.objects.all())是否发生更改。

另外,我建议您将电子邮件字段更改为EmailField并使用基于FormView类的视图。