Get() вернул более одного элемента - он вернул 2! - Django Запрос по внешнему ключу

У меня есть таблица A, в которой есть столбец, который является Foreign Key - details_id, указывающий на Primary Key в другой таблице B в Django

class A(models.Model):
    per_id = models.TextField(primary_key=True)
    hobby = models.TextField()
    details_id = models.ForeignKey(B, models.DO_NOTHING, blank=True, null=True) # the foreign key

class B(models.Model):
    details_id = models.AutoField(primary_key=True) # the primary key
    fav_food = models.TextField()

Я пытаюсь получить details_id в таблице B из per_id в таблице A

qs=qs.filter(per_id="2398") # this gives me the queyset for the person with per_id=2398
details=qs[0].details_id.details_id # this line gives the error

Проблема в том, что поскольку в таблице B есть 2 записи , которые имеют одинаковый details_id, я получаю следующую ошибку -

get() returned more than one B -- it returned 2!

Таблица A -

enter image description here

Таблица B -

enter image description here

И я хочу получить оба значения

Как я могу это сделать?

Любая помощь по этому вопросу будет очень признательна!!!

У вас проблема с базой данных. То, что должно быть первичным ключом в B, не является уникальным. Я не знаю, как это может произойти. Вы устанавливаете Django поверх таблицы базы данных, созданной чем-то другим?

Если вы определяете свою модель обычным способом, вы вообще не определяете первичный ключ явно, и Django создает его за вас и гарантирует его уникальность.

Для получения дубликатов:

b_list = list( B.objects.filter( details_id=2) ) # len(b_list) will be 2
Вернуться на верх