CSS3: псевдокласс не отрицания не полностью поддерживается Firefox?

Я пытаюсь использовать псевдокласс CSS3: not, как определено в спецификации. Согласно спецификации :

Псевдокласс отрицания,: not (X), является функциональная нотация, использующая простую селектор (исключая отрицание сам псевдокласс) в качестве аргумента. Он представляет собой элемент, который не m пытается создать систему для управления различными типами контента на странице. Например, страница может содержать текстовое содержимое, содержимое гиперссылки, видеоконтент и т. Д. В моем коде моделирования у меня есть ...

Я пытаюсь создать систему для управления различными типами контента на странице. Например, страница может содержать текстовое содержимое, содержимое гиперссылки, видеоконтент и т. Д.

В моем коде моделирования у меня есть базовый класс:

class ContentItem(models.Model):
    title = models.CharField(max_length=1000)
    page_order = models.IntegerField()
    last_update_date = models.DateTimeField(default=datetime.now())

    class Meta:
      abstract = True
      ordering = ['page_order', 'last_update_date', 'title']

Это базовый класс для всех элементов контента. Порядок страниц определяет его позицию на странице, например, элемент с page_order = 0 должен быть вверху страницы. Затем я определяю несколько конкретных моделей контента, которые наследуются от этой.

class LinkContent(ContentItem):
  url = models.URLField()
  link_text = models.CharField(max_lenth=1000)

class TextContent(ContentItem):
 text = models.CharField()


class VideoContent(ContentItem):
      title = models.CharField()
      video_file = models.FieldField(upload_to = 'videos')

Таких типов контента может быть гораздо больше. Затем я бы определил модель страницы, которая состоит из всех различных типов контента. Идеально, Я мог бы связать все типы в зависимости от базового типа. Таким образом, в этом отношении у вас будет смесь LinkContents, TextContents и VideoContents. Они будут отсортированы по page_order, чтобы определить их порядок на странице при рендеринге шаблона.

class Page(models.Model):
  contents = models.ManyToManyField(ContentItem)
  title = models.CharField()

Есть ли способ заставить такую ​​схему работать? Или проблематично иметь одно отношение к разным типам моделей? Я знаю, что это хорошее решение с точки зрения объектно-ориентированного программирования, в основном использующее полиморфизм в моих интересах, но я не уверен, что это имеет смысл на уровне базы данных.

Мне нужно что-то еще вроде этого:

class Page(models.Model):
  video_contents = models.ManyToManyField(VideoContent)
  link_contents = models.ManyToManyField(LinkContent)
  text_contents = models.ManyToManyField(TextContent)
  title = models.CharField()

I знаю, что это сработает, но моя схема определения размещения объектов на странице становится более сложной. Мне нужно было бы пройти все отношения контента, отсортировать их по page_order и затем отобразить их.

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

Мой последний вопрос: как мне с этим сделать удобное место администратора? Как мне упростить просмотр всех ContentItems, составляющих страницу, в одном представлении, чтобы их можно было легко перемещать, изменяя page_order?

Спасибо, что прочитали это, дайте мне знать, если вам нужна дополнительная информация .

6
задан Jon 21 March 2011 в 15:12
поделиться