Использование Django ContentTypes для определения набора данных - PullRequest
0 голосов
/ 13 января 2020

Я хочу, чтобы пользователи определяли набор контента, над которым они хотят работать, на сайте Django с (потенциально) весьма разнообразными типами контента. Я использую ContentTypes и отношение GenericForeignKey, чтобы иметь возможность пометить любое и все содержимое в конкретном наборе данных.

Моя проблема состоит в том, чтобы дать пользователю разумную последовательность шагов, что-то вроде этого: 1. Выберите, какие приложения содержат представляющие интерес данные [форма] 2. Выберите, какие модели для каждого приложения содержат данные представляющие интерес [форма] 3. Какие столбцы вас не интересуют? [форма] 4. Какие строки вас не волнуют? [форма] 5. все сохранившиеся строки теперь находятся в IN, и мы сохраняем их как записи GenericForeignKey для набора данных.

Я немного застрял в том, как реализовать эту логику c, потому что ContentTypes уже является составной, смоделированный с помощью 'app_label' и 'models'.

class Row_link(models.Model):
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

class Dataset(models.Model):
    setname = models.CharField(max_length=20, default="[empty]")
    members = models.ManyToManyField(Row_link)

Я мог бы добавить поля 'app_labels', 'models' и 'columns' в набор данных, но они должны быть производными от свойств ' поле членов, как только это поле полностью выбрано. Но «app_labels», «models» и «columns» нужны только для того, чтобы направлять пользователя через начальный процесс выбора. Может быть, я мог бы обработать их в строках запроса (?), Но я беспокоюсь о том, чтобы выйти за пределы этого механизма, особенно в качестве основного механизма переноса состояния через несколько запросов на загрузку страницы.

Как лучше всего провести пользователя, используя Django?

...