Наследование модели Django и внешние ключи

Эффект я верю Вам, ищет, достигается путем обеспечения HeaderTemplate для TabItem в Вас набор Вкладки.

<TabControl TabStripPlacement="Right">
  <TabControl.Resources>
    <Style TargetType="{x:Type TabItem}">
      <Setter Property="Padding" Value="4" />
      <Setter Property="HeaderTemplate">
        <Setter.Value>
          <DataTemplate>
            <ContentPresenter Content="{TemplateBinding Content}">
              <ContentPresenter.LayoutTransform>
                <RotateTransform Angle="90" />
              </ContentPresenter.LayoutTransform>
            </ContentPresenter>
          </DataTemplate>
        </Setter.Value>
      </Setter>
    </Style>
  </TabControl.Resources>
  <TabItem Header="Tab Item 1" />
  <TabItem Header="Tab Item 2" />
  <TabItem Header="Tab Item 3" />
  <TabItem Header="Tab Item 4" />
</TabControl>

Hope это помогает!

11
задан John Saunders 12 July 2009 в 01:04
поделиться

3 ответа

Из Django Docs :

Например, если вы создавали базу "мест", которую вы бы построили довольно стандартные вещи, такие как адрес, номер телефона и др. в базе. Затем, если вы хотите построить база данных ресторанов поверх места, вместо того, чтобы повторяться и репликации этих полей в Модель ресторана, вы могли бы сделать В ресторане есть OneToOneField для Место (потому что ресторан "это" место; на самом деле, чтобы справиться с этим, вы бы обычно используют наследование, которое предполагает неявный индивидуальный подход

Обычно у вас просто Ресторан , унаследованный от Место . К сожалению, вам нужно то, что я считаю уловкой: создание однозначной ссылки от подкласса к суперклассу ( Ресторан на Место )

3
ответ дан 3 December 2019 в 09:42
поделиться

Я вижу здесь проблему:

class D(A):
    #D has foreign key to either B or C, but not both.

Не могу этого сделать. Вам придется добавить и то, и другое, потому что в SQL столбцы должны быть определены точно.

Также, хотя унаследованные модели, такие как вы, компилируются с syncdb , они, похоже, не ведут себя так, как вы ожидаете - на по крайней мере, я не мог заставить их работать. Я не могу объяснить почему.

Вот как FK работает в Django

class A(models.Model):
    a = models.CharField(max_length=5)

class B(models.Model):
    a = model.ForeignKey(A, related_name='A')
    b = models.CharField(max_length=5)

class D(models.Model):
    a = model.ForeignKey(A, related_name='A')
    parent = model.ForeignKey(B, related_name='D')

. Таким образом, вы можете эффективно иметь кратные D в B.

Наследование в моделях (например, класс B (A)) не работает как я и ожидал. Может быть, кто-нибудь другой объяснит это лучше.

Взгляните на страницу этого документа . Речь идет об отношениях «многие к одному» в django.

b = B()
b.D_set.create(...)
2
ответ дан 3 December 2019 в 09:42
поделиться

Вы также можете создать общую связь http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#id1 и проверить типы для при установке или сохранении ограничьте его значениями B или C. Это, вероятно, больше работы, чем выяснение прямой ссылки, но может показаться чище.

3
ответ дан 3 December 2019 в 09:42
поделиться
Другие вопросы по тегам:

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