Novakuz
@Novakuz
Junior (Junior-а) Python developer

Как лучще выводить формы из модели?

Добрый день, подскажите такой вопрос. Хочу вывести данный класс в форму, только решить не могу как будет правильно, вроде как лучше будет использование Modelformset или можно обойтись ModelForm.

сlass Track(models.Model):

    person = models.ForeignKey(Person, verbose_name=u'Кто принял')
    city = models.ForeignKey(City, verbose_name=u'Город', null=True)
    street = models.ForeignKey(Street, verbose_name=u'Улица', null=True)
    building = models.ForeignKey(Building, verbose_name=u'№ дома', null=True)
    flat = models.ForeignKey(Flat, verbose_name=u'№ квартиры', null=True)
    ticket_type = models.ForeignKey(Ticket_type, null=True)
    status = models.ForeignKey(Status, null=True)
    port = models.SmallIntegerField(verbose_name=u'Порт абонента', default=0)
    note = models.TextField(verbose_name=u'Описание заявки', blank=True)
    TIME_WORK_BEGIN = (
        ('7-00', '7-00'),
        ('8-00', '8-00'),
        ('9-00', '9-00'),
        ('10-00', '10-00'),
        ('11-00', '11-00'),
        ('12-00', '12-00'),
        ('13-00', '13-00'),
        ('14-00', '14-00'),
        ('15-00', '15-00'),
        ('16-00', '16-00'),
        ('17-00', '17-00'),
        ('18-00', '18-00'),
        ('19-00', '19-00'),
        ('20-00', '20-00'),
        ('21-00', '21-00')
    )
    time_work = models.CharField(verbose_name=u'Время начала работ', max_length=5, choices=TIME_WORK_BEGIN)
    TIME_WORK_END = (
        ('7-00', '7-00'),
        ('8-00', '8-00'),
        ('9-00', '9-00'),
        ('10-00', '10-00'),
        ('11-00', '11-00'),
        ('12-00', '12-00'),
        ('13-00', '13-00'),
        ('14-00', '14-00'),
        ('15-00', '15-00'),
        ('16-00', '16-00'),
        ('17-00', '17-00'),
        ('18-00', '18-00'),
        ('19-00', '19-00'),
        ('20-00', '20-00'),
        ('21-00', '21-00')
    )
    time_work_end = models.CharField(verbose_name=u'Время окончания работ', max_length=5, choices=TIME_WORK_END)
    date_work = models.DateField(verbose_name=u'Дата работ', null=True)
    responsible_work = models.ManyToManyField(Person, related_name='+', verbose_name=u'Кому передана')
    create_date = models.DateTimeField(auto_now_add=True)
    last_mode_date = models.DateTimeField(auto_now=True)
  • Вопрос задан
  • 2249 просмотров
Решения вопроса 1
ali_aliev
@ali_aliev
Разработчик на Django/Python, JavaScript
Достаточно одной ModelForm. Попробуйте crispy_forms:

class TrackForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(TrackForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper(self)
        self.helper.layout.append(Submit('save', 'save'))

    class Meta:
        model = Track


в темплейтах {% crispy form %}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mututunus
@mututunus
Backend developer (Python, Golang)
FormSet'ы нужны только для создания/редактирования нескольких объектов одновременно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы