Я изучаю 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-способ, но я изо всех сил пытаюсь найти другой способ.В основном я хочу автоматически создавать формы в зависимости от того, какие поля есть в модели.
Так что в / отдел / должен быть текстовый ввод для имени и типа.Но на / user / должен быть текстовый ввод для имени и выделения для группы.Все это скорее в одном шаблоне.Если возможно, конечно.
Если это невозможно, каков наилучший способ сделать это?Поскольку создание разных шаблонов для каждой модели кажется неправильным.
РЕДАКТИРОВАТЬ: Теперь мой CreateView работает (все еще очень просто).Теперь я хочу создать ListView похожим образом.Я видел эту проблему, Перебирать имена и значения полей экземпляра модели в шаблоне , но он не смог мне помочь ...
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 }}
)