1. Bbclis

    12.03.2010

    0 ↑
    3 ↓
    Имеется модели
    taxonomy
    taxonomy_term
    taxonomy_map
    articles

    Возможно ли их связать явно указав в моделях,что при создании/изменении/удалении надо создать/удалить/изменить соотвествующие id в таксономии?

    Вообщем,как бы связать их? Или без предопределения save() и update() не обойтись ?
    from django.db import models
    from django.contrib.contenttypes.models import ContentType
    from django.contrib.contenttypes import generic

    # Create your models here.
    class Taxonomy(models.Model):
    type = models.CharField(max_length=20, unique=True)

    def __unicode__(self):
    return self.type

    class TaxonomyTerm(models.Model):
    type = models.ForeignKey(Taxonomy)
    term = models.CharField(max_length=20)
    parent = models.ForeignKey('self', null=True,blank=True)

    def __unicode__(self):
    return self.term

    class TaxonomyMap(models.Model):

    term = models.ForeignKey(TaxonomyTerm, db_index=True)
    type = models.ForeignKey(Taxonomy, db_index=True)
    content_type = models.ForeignKey(ContentType, verbose_name='content type', db_index=True)
    object_id = models.PositiveIntegerField(db_index=True)
    object = generic.GenericForeignKey('content_type', 'object_id')

    def __unicode__(self):
    return self.term.term
  2. Bbclis

    13.03.2010

    0 ↑
    2 ↓
    Если простым языком - как связать две таблицы по двум значениям? Например таблица

    articles и таблица taxonomy_map(содержит кучу id из разных мест,поэтому и нужна допольнительная проверка при связывании)

    Последняя содержит object_id и object. Как их связать по этим двум значениям,чтобы object_id был соответственно равен/проверялся id articles,но objcect всегда сверялся с значением "articles".


    Помогите чем "смогите" :)
  3. Иван Сагалаев

    13.03.2010

    1 ↑
    0 ↓

    Вы написали очень много слов, которые имеют смысл только для вас (никто не знает, что тут означает "таксономия", и как она должна быть с чем-то связана). Приведите какой-нибудь один конкретный пример целиком, что должно происходить.

  4. Bbclis

    13.03.2010

    0 ↑
    3 ↓
    омг,таксонимия...н/а термин для программиста?

    Во 2 посте написан понятный пример.
  5. Bbclis

    13.03.2010

    0 ↑
    0 ↓
    таксономия*
  6. Bbclis

    13.03.2010

    0 ↑
    1 ↓
    Если вообще вкратце,то:

    Нужен models.ForeignKey() - который будет доп. проверять значение со связанной базой,т.е.

    ForeignKey(type='type')
  7. Иван Сагалаев

    13.03.2010

    1 ↑
    0 ↓

    Нужен models.ForeignKey() - который будет доп. проверять значение со связанной базой,т.е.

    ForeignKey(type='type')
    

    Давайте по порядку...

    Что значит "проверять"? ForeignKey ссылается из одной модели в другую. Единственное, что тут обычно понимается под "проверять" — это гарантия того, что у родительской таблицы реально существует запись с ID, на который ссылается ForeignKey. Что должен проверять type?

  8. Bbclis

    13.03.2010

    0 ↑
    1 ↓

    Допустим есть таблица где в поле object_id хранятся id каких-либо данных из других таблиц (именно поэтому есть колонка "type,чтобы разделять эти id по типу(таблицам)). Задача - связать таблицы так чтобы учитывался указанный type.

  9. В Django есть GenericRelation, Вам случайно не он нужен?

    З.Ы. То ли я слишком привык к джанговско-питоновой терминологии и не понимаю другой, то ли Вы и впрямь очень уж непонятно пишете...

  10. Иван Сагалаев

    13.03.2010

    0 ↑
    0 ↓

    Да, и правда на generic relation похоже...

  11. Причем самое интересное, что в примере и так generic relations.

    А суть вопроса не понял, ни с первого, ни со второго раза)

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.