2017-11-19 4 views
0

を参照するクエリmany2many自己現在、私はこのモデルがあります:ジャンゴ:

class Group(models.Model): 
    def __str__(self): 
     return(self.name) 

    dependency = models.ManyToManyField('self',related_name='group_rel') 
    name = models.TextField() 


class Publication(models.Model): 

    name = models.TextField() 
    group = models.ManyToManyField(Group, related_name='group_dependency') 

私は1つのグループのために、すべての父親(グループ)を取得することができます。

group = Group.objects.filter(pk=1)[0] 
group.dependency.all() 

しかし、1つのグループについてすべての子(グループ)を照会する必要があります。

dir(group) 

['DoesNotExist', 'MultipleObjectsReturned', 'class', 'delattr', 'dict', 'dir', 'doc', 'eq', 'format', 'ge', 'getattribute', 'gt', 'hash', 'init', 'init_subclass', 'le', 'lt', 'module', 'ne', 'new', 'reduce', 'reduce_ex', 'repr', 'setattr', 'setstate', 'sizeof', 'str', 'subclasshook', 'weakref', '_check_column_name_clashes', '_check_field_name_clashes', '_check_fields', '_check_id_field', '_check_index_together', '_check_local_fields', '_check_long_column_names', '_check_m2m_through_same_relationship', '_check_managers', '_check_model', '_check_model_name_db_lookup_clashes', '_check_ordering', '_check_swappable', '_check_unique_together', '_do_insert', '_do_update', '_get_FIELD_display', '_get_next_or_previous_by_FIELD', '_get_next_or_previous_in_order', '_get_pk_val', '_get_unique_checks', '_meta', '_perform_date_checks', '_perform_unique_checks', '_save_parents', '_save_table', '_set_pk_val', '_state', 'check', 'clean', 'clean_fields', 'date_error_message', 'delete', 'dependency', 'from_db', 'full_clean', 'get_deferred_fields', 'group_dependency', 'id', 'name', 'objects', 'pk', 'prepare_database_save', 'refresh_from_db', 'save', 'save_base', 'seri alizable_value', 'unique_error_message', 'validate_unique']

注:出版物が使用されていないこの質問です。グループには数多くのものがあるので、私はそれを示します。

+0

[下位関係のない '自己' へのDjangoの多対多の関係](https://stackoverflow.com/questions/19837728/django-manytomany-relation-to-self-without-backward-relations)の可能性の重複 –

+0

正解!ありがとうございます! – guibos

答えて

1

多対多のフィールドには、dependencyという名前が付けられています。使用する必要があります。

group.dependency.all() 
+0

返事をいただきありがとうございますが、このグループのすべての父親を返却しました。 – guibos

+0

ここであなたが親と子として扱っていることは明確ではありません。しかし、逆の場合は、関連する名前 'group.group_rel.all()'を使用してください。 –

+0

親と子として扱っているものは私の間違いではっきりしないことがあります。私は 'group.group_rel.all()'で試みましたが、グループに属性 'group_rel'がありません ' AttributeError: 'Group'オブジェクトに 'group_rel'属性がありません – guibos