Opened 5 years ago
Last modified 5 years ago
#31394 closed Bug
Impossible to create with an inverse one-to-one relationship — at Initial Version
Reported by: | Pascal de Sélys | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 2.2 |
Severity: | Normal | Keywords: | |
Cc: | deselys.pascal@… | Triage Stage: | Unreviewed |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Hello, I don't know if this is a bug or if it's something wanted. If I create two models .
Work >>>
Application One:
class Foo(models.Model): foo_bar = models.IntegerField() def save(self, *args, **kwargs): created = self._state.adding super(EqoLevel, self).save(*args, **kwargs) if created: self.bar_set.create()
Application Two:
class Bar(models.Model): foo = models.ForeignKey("app1.Foo", on_delete=CASCADE,primary_key=True) foo_bar_2 = models.IntegerField()
Not work >>>
Application One:
class Foo(models.Model): foo_bar = models.IntegerField() def save(self, *args, **kwargs): created = self._state.adding super(EqoLevel, self).save(*args, **kwargs) if created: self.bar_set.create()
Application Two:
class Bar(models.Model): foo = models.OneToOneField("app1.Foo", on_delete=CASCADE) foo_bar_2 = models.IntegerField()
But if I use a I can't run a one to one creation with an inverse relationship and yet during makemigrations it says (HINT: ForeignKey(unique=True) is usually better served by a OneToOneField.),
Yes but without this function I can't find it. I can also use a signal but I find it a shame to have to create a signal for the simple creation of a one to one relationship that foreign key can provide.
Thank's