@paevlk2007

Django, как организовать связь двух полей в форме?

class Accessories_view_eq(models.Model):
    accessories_plot = models.ForeignKey(Accessories_plot, verbose_name=u"Участок", blank=True, null=True)
    access_name_view = models.CharField("Оборудование:", max_length=100,  blank=True, null=True)

    def __unicode__(self):
        #return u"%s - %s" % (unicode(self.accessories_plot), self.access_name_view)
        return self.access_name_view

    class Meta:
        verbose_name_plural = _(u"Справочник ВПР - 2.Оборудование")
        ordering = ['accessories_plot']

class Accessories_node(models.Model):
    accessories_view_eq = models.ForeignKey(Accessories_view_eq, verbose_name=u"Оборудование", blank=True, null=True)
    access_name_node = models.CharField("Узлы:", max_length=100,  blank=True, null=True)

    def __unicode__(self):
        return self.access_name_node

    class Meta:
        verbose_name_plural = _(u"Справочник ВПР - 3.Узлы оборудования")
        ordering = ['accessories_view_eq']


В модели [Accessories_view_eq] нужен __unicode__ с одним полем, а вот в форме [модели Accessories_node] нужно вывести так, как если бы я в модели [Accessories_view_eq] сделал бы вот так: return u"%s - %s" % (unicode(self.accessories_plot), self.access_name_view) и собственно в форме модели [Accessories_node], поле accessories_view_eq отразилось бы два поля.

Есть такая магия на земле, которая бы решила эту проблему???

Спасибо!
  • Вопрос задан
  • 2594 просмотра
Решения вопроса 1
sim3x
@sim3x
class AccessoriesNode(models.Model):
        accessories_view_eq = models.ForeignKey(
                  AccessoriesViewEq, verbose_name=u"Оборудование", blank=True, null=True)
        access_name_node = models.CharField("Узлы:", max_length=100,  blank=True, null=True)

        def __unicode__(self):
            return u'{node} {plot} {view}'.format(
                node=self.accessories_view_eq.access_name_node,
                plot=self.accessories_view_eq.accessories_plot,
                view=self.access_name_view
            )

        class Meta:
            verbose_name_plural = _(u"Справочник ВПР - 3.Узлы оборудования")
            ordering = ['accessories_view_eq']


можно стучаться через __ можно через точку

Попробуй давать более осмысленные названия поля модели
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
syschel
@syschel
freelance/python/django/backend
Не до конца понял что за магия нужна, но если вы про связи, то двойное подчёркивание рулит.

class Accessories_node(models.Model):
    def __unicode__(self):
        return u"%s - %s" % (self.accessories_view_eq__accessories_plot, self.accessories_view_eq__access_name_view)
Ответ написан
Комментировать
alternativshik
@alternativshik
P.S. имена моделей должны быть в CamelCase.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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