Как связать две модели в __init__ через related_name при вызове только родителя, создавая пустой объект
У меня есть две модели, как показано ниже, связанные отношением OneToOneField. Как я могу проверить по related_name что существует связь с x.RelName до того, как я использую x.save (). Все ниже ...
models.py
class Parent(models.Model):
name = models.CharField(max_length=255)
member = models.ForeignKey(User, related_name="MemberUsr", blank=True, null=True, default=None, on_delete=models.CASCADE)
class Child(models.Model):
child_name = models.CharField(max_length=255, null=True, blank=True)
parent_name = models.OneToOneField(Parent, related_name='RelName', null=True, on_delete=models.CASCADE)
py manage.py shell
>>> from app1.models import Parent, Child
>>> x = Parent()
В этот момент должно быть искусственное соединение в _ _ init _ _
>>> x.RelName
Должно вернуться, что он искусственно привязан к Child. Если я запускаю x.save (), это, очевидно, создает связи. Но я хотел бы иметь возможность проверить с помощью related_name перед сохранением (), что существует привязка.
OK, я думаю, что вы неправильно понимаете создание объектов. Ошибка, о которой вы упоминаете, связана с тем, что вы не создаете родительский экземпляр до этого. Посмотрите документацию о Как сохранять объекты.
Например, в вашем случае:
from app1.models import Parent, Child
parent = Parent(name='Parent example', member= instance_user)
parent.save()
child = Child(child_name='Child', parent_name=parent)
child.save()
В данный момент можно написать проверку отношений child.RelName
Другое замечание: вам следует переименовать ваши поля в модели Child, назвав их просто 'name' и 'parent'.