【发布时间】:2020-10-28 16:00:13
【问题描述】:
我在我的模型中定义了一个使用一篇或多篇文章的服务。因此,我使用多对多关系。这是我的模型.py
class Artikel(models.Model):
id = models.AutoField(unique=True, primary_key=True)
artikel_typ = models.IntegerField(unique=False, default=0)
bezeichnung = models.TextField(max_length=50)
menge = models.FloatField(blank=True, null=True)
preis = models.FloatField(blank=True, null=True)
einheit = models.TextField(blank=True, null=True)
def __str__(self):
return self.bezeichnung
class Leistung(models.Model):
id = models.TextField(unique=True,primary_key=True)
bezeichnung = models.TextField()
dauer = models.FloatField(blank=True, null=True) # This field type is a guess.
preis = models.FloatField() # This field type is a guess.
artikel = models.ManyToManyField(Artikel,null=True, unique=False)
def __str__(self):
return self.bezeichnung
class Meta:
db_table = 'leistung'
我定义了添加新服务的表单,如下所示:
class AddNewServiceForm(forms.ModelForm):
class Meta:
artikel_dd = Artikel.objects.all()
model = Leistung
fields = '__all__'
widgets = {'id':forms.TextInput(attrs={'id': 'id', 'name': 'id', 'type': 'text', 'class': 'form-control',
'data-val-required': 'Bitte tragen Sie eine 4MyHealth ID ein!', 'aria-required': 'true',
'aria-invalid': 'false', }),
'bezeichnung': forms.TextInput(
attrs={'id': 'bezeichnung', 'name': 'bezeichnung', 'type': 'text', 'class': 'form-control',
'data-val-required': 'Bitte tragen Sie eine Bezeichnung ein!', 'aria-required': 'true',
'aria-invalid': 'false', }),
'dauer': forms.TextInput(
attrs={'id': 'dauer', 'name': 'dauer', 'type': 'number', 'step': '0.01', 'class': 'form-control',
'data-val-required': 'Bitte tragen Sie die Dauer ein!', 'aria-required': 'true',
'aria-invalid': 'false', }),
'preis': forms.TextInput(
attrs={'id': 'preis', 'name': 'preis', 'type': 'number', 'step': '0.01', 'class': 'form-control',
'data-val-required': 'Bitte tragen Sie die Dauer ein!', 'aria-required': 'true',
'aria-invalid': 'false', }),
'artikel': ModelSelect2MultipleWidget(queryset=Artikel.objects.all(),attrs={'id': 'artikel', 'name': 'artikel_dropdown',
'aria-required': 'false',
'aria-invalid': 'false', }),
}
模板看起来像下面的 sn-p(我不会全部发布,因为它很多):
{% load static %}
<!DOCTYPE html>
<html lang="en">
{% block javascript %}
<script type="text/javascript">
</script>
{% endblock %}
{% block jquery %}
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
</script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
{% endblock %}
<script src="{% static 'django_select2/django_select2.js' %}"></script>
<link href="/static/website/js/select2.min.js" rel="stylesheet" />
<script src="/static/website/js/select2.min.js"></script>
<head>
{% include 'head.html' %}
<!--Leistungen -->
{% load static %}
<body class="animsition">
<div class="page-wrapper">
{% include 'sidebar.html' %}
<!-- PAGE CONTAINER-->
<div class="page-container">
...
<div class="row form-group">
<label class="label mb-1">Verfügbare Artikel:</label>
{{ forms.artikel }}
</div>
....
所以当我添加 {{ forms.artikel }} 时,该字段出现,但里面没有数据。当我在该字段中输入内容时,我在控制台中收到错误:加载资源失败:服务器响应状态为 404(未找到)。
我错过了什么?/我做错了什么?我怎么能解决这个问题?提前致谢!
【问题讨论】:
标签: django widget jquery-select2 multipleselection