#31394: Impossible to create with an inverse one-to-one relationship
-------------------------------------+-------------------------------------
     Reporter:  scwall               |                    Owner:  nobody
         Type:  Bug                  |                   Status:  new
    Component:  Database layer       |                  Version:  2.2
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:
     Keywords:                       |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Description changed by scwall:

Old 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

New 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 (fields.W342) Setting
 unique=True on a ForeignKey has the same effect as using a OneToOneField.
 (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

--

-- 
Ticket URL: <https://code.djangoproject.com/ticket/31394#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/064.d061c6d79fefd96f92def33a309f5cdd%40djangoproject.com.

Reply via email to