2010-02-10 3 views
0

Предположим, что у меня есть таблица Articles, в которой есть поля article_id, content и содержит одну статью с идентификатором 1.SQLAlchemy ForeignKey отношение через промежуточную таблицу

У меня также есть таблица Categories, которая имеет поля category_id (первичный ключ), category_name и содержит одну категорию с идентификатором 10.

Теперь предположим, что у меня есть таблица ArticleProperties, которая добавляет свойства Articles. В этой таблице представлены поля article_id, property_name, property_value.

Предположим, что я хочу создать сопоставление от Categories до Articles через ArticleProperties стол.

Я делаю это, вставляя следующие значения в таблицу ArticleProperties: (article_id = 1, property_name = "category", property_value = 10).

Есть ли способ в SQLAlchemy, чтобы выразить, что строки в таблице ArticleProperties с «категории» property_name фактически внешние ключи таблицы Articles к таблице Categories?

Это сложная проблема, и я сам не нашел ответа.

Любая помощь оценена!

Спасибо, Бода Cydo.

+0

Может ли кто-нибудь ответить? пожалуйста??? – bodacydo

+0

george, у меня были данные, вставленные в него. после вашего редактирования никто не знает, что article_id = 1 - единственная статья, которую я имел в таблице, а property_value = 10 означает, что у меня была только одна категория с category_id = 10. – bodacydo

+0

Почему вы так сильно хотите помещать категории в большой (и общий) список ArticleProperties? – van

ответ

1

Предполагая, что вы правильно поняли вопрос, то нет, вы не можете моделировать эти отношения, как вы предложили. (Это помогло бы, если бы вы описали желаемый результат, а не ваше воспринимаемое решение)

Я думаю, что вам может понадобиться таблица сопоставлений «много ко многим», называемая ArticleCategories, состоящая из 2 столбцов int, ArticleID и CategoryID (с соответствующие FK)

+0

В статье может быть много свойств - категория, которая была последним для редактирования статьи, фазы луны, в которой была создана статья, или всего, что вы можете себе представить. Я не могу моделировать его как ArticleCategories или ArticleMoonPhase, так как существует бесконечное количество свойств (имена которых я иногда даже не знаю - пользователи, которые создают статьи, добавляют к нему свойства). – bodacydo

+0

Конечным результатом является то, что когда я делаю что-то вроде Item.property_name, и sqlalchemy автоматически вычисляет значение. В моем простом примере .property_name будет .category, и sqlalchemy будет знать, что .category является внешним ключом в таблице категорий, и вместо того, чтобы возвращать id = 10, он знал бы, что. Category является внешним ключом в категории и возвращает объект полной категории. – bodacydo

+0

Надеюсь, я объяснил это немного более четко. – bodacydo

Смежные вопросы