Как работать с данными в промежуточной таблице в Django ORM?

Как при помощи Django ORM работать с данными в промежуточной таблице, при связи многие ко многим?
Например таблица А и Б связаны через таблицу А_Б и в ней есть поля А_ид Б_ид и допустим поле Значение, как с ним работать если выбираем сущность а и хотим вывести все связанные сущности Б плюс это значение?
  • Вопрос задан
  • 2741 просмотр
Решения вопроса 2
@IvanOne
Ваш ответ тут https://docs.djangoproject.com/es/1.9/topics/db/ex...
как вриант:
class Publication(models.Model):
    title = models.CharField(max_length=30)

    def __str__(self):              # __unicode__ on Python 2
        return self.title

    class Meta:
        ordering = ('title',)

class Article(models.Model):
    headline = models.CharField(max_length=100)
    publications = models.ManyToManyField(Publication)

    def __str__(self):              # __unicode__ on Python 2
        return self.headline

    class Meta:
        ordering = ('headline',)

Publication.objects.get(id=4).article_set.all()
Ответ написан
Комментировать
baterson
@baterson
python/django
Если вы хотите добавить дополнительные поля в ManyToMany таблицу, используйте throw
class A(models.Model):
    name_a = models.CharField(max_length=100)

class B(models.Model):
    name_b = models.CharField(max_length=100)
    a_b_mtm = models.ManyToManyField(A, throw='A_B')

class A_B(models.Model):
    a = models.ForeignKey(A)
    b = models.ForeignKey(B)
    some_value = models.CharField(max_length=200)

a = A.objects.create(name='some_name')
b = B.objects.create(name='other_name')
a_b = A_B.objects.create(a=a, b=b, some_value='some_value')
all_b = a.objects.b_set.all()  #все объекты b

И потом в цикле можно взять все some_value или сразу взять все значения через связанную таблицу, а не через a
вот тут почитайте
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы