Opened 4 years ago

Last modified 4 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

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top