来自模型的Django选择表
好吧,我已经被困在这个标签系统上好几个星期了 我创建了一个django网站,让客户能够为我们翻译标签。我正在创建一个表单,其中客户选择他们希望创建相应翻译的项目代码。这意味着表单从模型中获取它的选择数据。当选择一个项目代码时,我希望能够获取所选的项目代码,并将用户反转到与该项目代码匹配的url中 目前,我正在使用来自模型的Django选择表,django,python-3.x,django-forms,django-templates,django-views,Django,Python 3.x,Django Forms,Django Templates,Django Views,好吧,我已经被困在这个标签系统上好几个星期了 我创建了一个django网站,让客户能够为我们翻译标签。我正在创建一个表单,其中客户选择他们希望创建相应翻译的项目代码。这意味着表单从模型中获取它的选择数据。当选择一个项目代码时,我希望能够获取所选的项目代码,并将用户反转到与该项目代码匹配的url中 目前,我正在使用modelmultipechoicefield从模型中获取数据。这是可行的,我能够以HTML格式显示数据。但是,我无法使用cleaned_data获取数据,因为它只返回整个queryse
modelmultipechoicefield
从模型中获取数据。这是可行的,我能够以HTML格式显示数据。但是,我无法使用cleaned_data
获取数据,因为它只返回整个queryset请求
这意味着我得到了错误
NoReverseMatch at /labelcreator/
Reverse for 'create_label' with keyword arguments '{'pk': <QuerySet [<Label: 13272432 Collar>]>}' not found. 1 pattern(s) tried:
['labelcreator\\/(?P<pk>[0-9]+)\\/create_label\\/$']
型号.py
class LabelListForm(forms.Form):
item = forms.ModelMultipleChoiceField(queryset=Label.objects.all(), label="")
class Label(models.Model):
item_code = models.IntegerField(unique=True, primary_key=True)
item_description = models.CharField(max_length=50)
label_image = models.ImageField(blank=True, null=True)
label_completed = models.BooleanField(default=False)
created_date = models.DateTimeField(default=timezone.now)
submitted_date = models.DateTimeField(blank=True, null=True)
class Meta:
verbose_name = "label"
verbose_name_plural = "labels"
def submit(self):
self.submitted_date = timezone.now()
def get_absolute_url(self):
return reverse('create_label', kwargs={'pk'. self.pk})
def __str__(self):
return "{0} {1}".format(self.item_code, self.item_description)
class LabelListView(LoginRequiredMixin, View):
form_class = LabelListForm
template_name = 'labelcreator/overview_create.html'
def get(self, request, *args, **kwargs):
form = self.form_class()
return render(request, self.template_name, {'form': form})
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
item = form.cleaned_data['item']
return reverse('labelcreator:create_label', kwargs={'pk': item})
return render(request, self.template_name, {'form': form})
视图.py
class LabelListForm(forms.Form):
item = forms.ModelMultipleChoiceField(queryset=Label.objects.all(), label="")
class Label(models.Model):
item_code = models.IntegerField(unique=True, primary_key=True)
item_description = models.CharField(max_length=50)
label_image = models.ImageField(blank=True, null=True)
label_completed = models.BooleanField(default=False)
created_date = models.DateTimeField(default=timezone.now)
submitted_date = models.DateTimeField(blank=True, null=True)
class Meta:
verbose_name = "label"
verbose_name_plural = "labels"
def submit(self):
self.submitted_date = timezone.now()
def get_absolute_url(self):
return reverse('create_label', kwargs={'pk'. self.pk})
def __str__(self):
return "{0} {1}".format(self.item_code, self.item_description)
class LabelListView(LoginRequiredMixin, View):
form_class = LabelListForm
template_name = 'labelcreator/overview_create.html'
def get(self, request, *args, **kwargs):
form = self.form_class()
return render(request, self.template_name, {'form': form})
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
item = form.cleaned_data['item']
return reverse('labelcreator:create_label', kwargs={'pk': item})
return render(request, self.template_name, {'form': form})
模板
<link rel="stylesheet" href="{% static 'labelcreator/css/overview_edit_master.css' %}">
<div class="container">
<div class="row">
<div class="col-lg-12">
<form class="form-horizontal" method="POST">
{% csrf_token %}
<div class="form-group" id="productGroup">
<label for="inlineFormCustomSelectPref">Choose Product...</label>
{{ form.as_p }}
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary my-1 pull-right">Create
Label</button>
</div>
</form>
</div>
</div>
</div>
{%csrf_令牌%}
选择产品。。。
{{form.as_p}}
创造
标签
非常感谢您提供的任何帮助我不明白您为什么在这里使用多回声冰场。您希望选择单个标签,然后重定向到其“创建标签”页面;您应该使用ModelChoiceField。是的,我现在很清楚这一点。我已经纠正了这一点。虽然我仍然无法从数据中获得所需的信息