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 -
Таблица B -
И я хочу получить оба значения
Как я могу это сделать?
Любая помощь по этому вопросу будет очень признательна!!!
У вас проблема с базой данных. То, что должно быть первичным ключом в B, не является уникальным. Я не знаю, как это может произойти. Вы устанавливаете Django поверх таблицы базы данных, созданной чем-то другим?
Если вы определяете свою модель обычным способом, вы вообще не определяете первичный ключ явно, и Django создает его за вас и гарантирует его уникальность.
Для получения дубликатов:
b_list = list( B.objects.filter( details_id=2) ) # len(b_list) will be 2

