私はDjangoの新機能です...Djangoフォームには有効な値が表示されません
私はモデルを持っています。 2つの外部キーフィールドに注目してください(DeviceProfile
モデルは、実際にデータを持っていますが、MISMStateSnapshot
ない)は:
class MISMWorkflow(models.Model):
createdAt = models.DateTimeField(default=timezone.now)
currentSnapshot = models.ForeignKey('MISMStateSnapshot', null=True, blank=True, on_delete=models.SET_NULL)
device = models.ForeignKey(DeviceProfile, null=True, blank=True, on_delete=models.SET_NULL, related_name='workflows')
def get_absolute_url(self):
return reverse('{}:workflow_detail'.format(VIEW_NAMESPACE), args=(self.pk,))
そしてCreateView
:
class WorkflowCreateView(generic.CreateView):
model = MISMWorkflow
fields = '__all__'
template_name = 'mism_web/workflow_create_form.html'
def form_valid(self, form):
form.instance.device = DeviceProfile.objects.get(pk=self.kwargs.get('device_id'))
form.instance.createdAt = timezone.now()
return super(WorkflowCreateView, self).form_valid(form)
テンプレート:
{% extends 'mism_web/base.html' %}
{% load material_form %}
{% block content %}
<form action="" method="POST">{% csrf_token %}
<!--{{ form.as_p }}-->
{% form form=form %}{% endform %}
<input type="submit" name="_submit" class="btn" value="Save" />
</form>
{% endblock %}
のURL:
url(r'^workflow/workflow_create/$', workflow.WorkflowCreateView.as_view(), name='workflow_create_new'),
これは私がページを作成するために行くとき、私が見たものである。
これで間違って物事のカップルがあります。
- は私がのカレンダー/時計ウィジェットが表示されません
DateTimeField
(createdAt)をご覧ください。 - は
currentSnapshot
またはdevice
いずれかのフィールドには選択入力(DB内のデバイスがあるにもかかわらず)
私はdjango-material
プラグインを使用していますので、これではありませんありません。私はそれなしでテストし、私はまだ同じ "空の"フォームを取得します。
この原因と修正方法は何ですか?
EDIT:
これは私が `MISMWorkflow」の管理パネルでは何を参照してください、これはまさに私が(OFCを期待フォームの一種であるが、私はここから外部キーエンティティを作成する必要はありません、ちょうどそれらをダウンリストに):
EDIT:問題は、私は基本テンプレートを拡張するときにのみ起こるようです。私がそれを使わなければ、フィールドを正しく見ることができます。例えば、テンプレートはそうのようになります:
<html>
<body>
<form action="" method="POST">{% csrf_token %}
{{ form.as_p }}
<input type="submit" name="_submit" class="btn" value="Save" />
</form>
<body>
<html>
そして私は今、ドロップダウンを見ることができます:
ここに私のbase.html
です:
{% load static %}
{% load compress %}
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link type="text/css" rel="stylesheet" href="{% static 'mism_web/css/materialize.min.css' %}" media="screen,projection"/>
<link type="text/css" rel="stylesheet" href="{% static 'mism_web/css/helper.css' %}" media="screen,projection"/>
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<!-- TODO: Fix navbar links -->
<body>
<div>
<nav>
<div class="nav-wrapper">
<a href="{% url 'mism_web:index' %}" class="brand-logo">MISM</a>
<a href="#" data-activates="mobile" class="button-collapse">
<i class="material-icons">menu</i>
</a>
<ul class="right hide-on-med-and-down">
<li>
<a href="{% url 'mism_web:index' %}">
<i class="material-icons left">home</i>
Home
</a>
</li>
<li>
<a href="{% url 'mism_web:device_list' %}">
<i class="material-icons left">perm_device_information</i>
Devices
</a>
</li>
<li>
<a href="{% url 'mism_web:workflow_list' %}">
<i class="material-icons left">format_indent_increase</i>
Workflows
</a>
</li>
<li>
{% if user.is_authenticated %}
<a href="#">{{ user.get_username }}</a>
{% else %}
<a href="#">Unknown user</a>
{% endif %}
</li>
</ul>
<ul class="side-nav" id="mobile">
<li>
<a href="{% url 'mism_web:device_list' %}">
<i class="material-icons top">home</i>
Home
</a>
</li>
<li>
<a href="{% url 'mism_web:device_list' %}">
<i class="material-icons top">perm_device_information</i>
Devices
</a>
</li>
<li>
<a href="{% url 'mism_web:workflow_list' %}">
<i class="material-icons top">format_indent_increase</i>
Workflows
</a>
</li>
<li>
{% if user.is_authenticated %}
<a href="#">{{ user.get_username }}</a>
{% else %}
<a href="#">Unknown user</a>
{% endif %}
</li>
</ul>
</div>
</nav>
</div>
<div class="container">
{% block content %} {% endblock %}
</div>
<script type="text/javascript" src="{% static 'mism_web/js/jquery-3.2.1.min.js' %}"></script>
<script type="text/javascript" src="{% static 'mism_web/js/materialize.min.js' %}"></script>
<script type="text/javascript" src="{% static 'mism_web/js/helper.js' %}"></script>
</body>
</html>
だから、それはbase.html
です何らかの形でフォーム表示を妨害します。私はどのように考えている。
が、あなたはそれがJSで適切に初期化されていることを確認してきましたか?また、選択フィールドに値を表示しないために、フォームを開く前に** DeviceProfile **および** MISMStateSnapshot **のオブジェクトを作成しましたか? –
@AjmalNoushad:2番目の質問に関して、DBには 'MISMStateSnapshot'オブジェクトはありませんが、' DeviceProfile'オブジェクトがあります。 2番目の質問に関して、私は何を初期設定するのか理解していません。 – nakiya