UpdateView模板仅显示相关模型的pk,如何使其显示其他字段?



我是 django 的初学者,我的问题相当美观......现在我的模板看起来像这样:
编辑子类别模板

选择标记中的第一个选项是先前在创建视图中选择的类别外键...如果不是只显示外键,我还可以显示类别模型的名称字段,使其看起来像选择标签中的其他选项,那就太好了。

这是我的代码:

models.py

class Categories(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return self.name

class Subcategories(models.Model):
name = models.CharField(max_length=50)
category = models.ForeignKey(
'Categories',
on_delete=models.CASCADE,
)
def __str__(self):
return self.name

views.py

from django.views.generic import UpdateView
from django.urls import reverse_lazy
from .models import Subcategories
from .forms import SubcategoriesForm
class EditSubcategory(UpdateView):
model = Subcategories
form_class = SubcategoriesForm
template_name = 'inventory/edit/editSubcategory.html'
success_url = reverse_lazy('inventory:subcategoriesList')
def get_context_data(self, **kwargs):
context = super(EditSubcategory, self).get_context_data(**kwargs)
context['categories'] = Categories.objects.all()
return context

forms.py

from .models import Categories
from .models import Subcategories
class CategoriesForm(forms.ModelForm):
class Meta:
model = Categories
fields = ('name',)
class SubcategoriesForm(forms.ModelForm):
class Meta:
model = Subcategories
category = forms.ModelMultipleChoiceField(queryset=Categories.objects.all())
fields = ('name', 'category')

urls.py

path('subcategories/<int:pk>/edit', views.EditSubcategory.as_view(), name='editSubcategory'),

编辑子类别.html

<form enctype="multipart/form-data" action="" method="POST" id="editSubcategoryForm">
{% csrf_token %}
<div>
<fieldset class="module aligned">
<div class="form-row field-name">
<div>
<label class="lead">Name: </label>
<input type="text" name="name" class="form-control" maxlength="50" required id="id_name" value="{{ form.name.value }}"/>
</div>
</div>
<br />
<div class="form-row field-category">
<div>
<label class="lead">Category: </label>
<select name="category" class="form-control" required id="id_category">
<option value="{{ form.category.value }}">{{ form.category.value }}</option>
{% for category in categories.all %}
<option value="{{category.pk}}">{{category.pk}} -- {{ category.name }}</option>
{% endfor %}
</select>
</div>
</div>
<br />
</fieldset>
</div>
<br />
<input type="submit" value="Guardar"/>
</form>

有什么可能的方法可以做到这一点吗?

提前非常感谢

没关系,我自己找到了解决方案...我刚刚在编辑子类别.html中更改了{{ object.category }}{{ form.category.value }}

现在看起来像这样

<select name="category" class="form-control" required id="id_category">
<option value="{{ form.category.value }}">{{ object.category }}</option>
{% for category in categories.all %}
<option value="{{category.pk}}">{{category.pk}} -- {{ category.name }}</option>
{% endfor %}
</select>

相关内容

最新更新