Как вставить данные в поле одной модели, которая OnetoOneField сопоставлена ​​с другой моделью - PullRequest
0 голосов
/ 15 апреля 2019

Это мои модели, где eda_defect_id из eda_detail - это поле «один к одному», относящееся к модели defect_details.

class defect_details(models.Model):
    defect_id = models.CharField(primary_key=True,max_length=20)
    description = models.CharField(max_length=256)


class eda_detail(models.Model):
    eda_defect_id = models.OneToOneField('defects.defect_details',primary_key=True, on_delete=models.PROTECT)
    analysis_writeup = models.TextField(blank=True, null=True)

В своем коде я пытаюсь вставить в модели, но получаю ошибку:

from defects.models import defect_details
from edainfo.models import eda_detail

defect_id = "Jira-SMSV-512"
description = "Hello There"
defect_obj = defect_details(defect_id=defect_id, description=description)
defect_obj.save()

eda_obj = eda_detail(eda_defect_id=defect_id)
eda_obj.save()

ОШИБКА: ValueError: Невозможно назначить «Jira-SMSV-512»: «eda_detail.eda_defect_id» должен быть экземпляром «дефектом_детали».

1 Ответ

0 голосов
/ 15 апреля 2019

Ваша модель eda_detail имеет OneToOne на модели defect_details, поэтому при сохранении данных вы можете передавать только экземпляры defect_details, а не строки, в eda_detail,

поэтому ваш код должен быть похож на

eda_obj = eda_detail(eda_defect_id=defect_obj)

и сохраните его, используя eda_obj.save()

Для примера из документации Django, Django OneToOne

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...