我现在正在学习Django,但我正在尝试更动态地做一些事情。
基本上我已经定义了多个模型,
class Group(models.Model):
name = models.CharField(max_length=255)
type = models.CharField(max_length=255) # Ignore this, is used somewhere else
class User(models.Model):
name = models.CharField(max_length=255)
group = models.ForeignKey(Group, verbose_name='group', on_delete=models.CASCADE)
(比这两个模型更多)
我想为这些模型中的每个模型编写不同的视图并不是真正的Django方法,但是我正在努力寻找不同的方法。基本上,我想根据模型具有的字段自动创建表单。
因此,在/ department /上应该有一个用于输入名称和类型的文本输入。 但是,在/ user /上应该有一个用于输入名称的文本输入和一个用于组的选择。 所有这些都放在同一模板中。当然可以。
如果不可能,执行此操作的最佳方法是什么?由于为每个模型创建不同的模板似乎并不正确。
编辑: 现在,我的CreateView正常运行了(仍然非常基础)。现在,我想以类似的方式创建一个ListView。我已经看到了这个问题,Iterate over model instance field names and values in template,但是它无法帮助我...
forms.py
class ModelCreate(CreateView):
fields = '__all__'
template_name = 'polls/models/model_create.html'
def get_form(self, form_class=None):
try:
self.model = apps.get_model('polls', self.kwargs['model'])
except LookupError:
raise Http404('%s is not a valid model.' % self.kwargs['model'])
return super(ModelCreate, self).get_form(form_class)
model_create.html
{% extends 'polls/core.html' %}
{% block content %}
<form method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
{% endblock %}
是否可以以类似方式创建ListView?这样我就可以动态获取字段名称和值(像{{ form }}
这样的位)