[Django] #29466: Textual "to" parameter of ForeignKey fails to resolve if placed in abstract model

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[Django] #29466: Textual "to" parameter of ForeignKey fails to resolve if placed in abstract model

Django
#29466: Textual "to" parameter of ForeignKey fails to resolve if placed in abstract
model
-------------------------------------+-------------------------------------
               Reporter:  Vitalik    |          Owner:  nobody
  Verhovodov                         |
                   Type:  Bug        |         Status:  new
              Component:  Database   |        Version:  2.0
  layer (models, ORM)                |
               Severity:  Normal     |       Keywords:
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 {{{#!python
 import django
 from django.conf import settings

 settings.configure(DEBUG=True)
 django.setup()

 from django.db import models


 SHOULD_I_FAIL = True  # switch this to reproduce the bug


 class ReferencedModel(models.Model):
     field = models.FloatField()

     class Meta:
         app_label = 'myapp'


 ref = 'ReferencedModel' if SHOULD_I_FAIL else ReferencedModel


 class AbstractModel(models.Model):
     # NOTE: only abstract models are affected
     field = models.ForeignKey(ref, on_delete=models.CASCADE)

     class Meta:
         abstract = True
         app_label = 'myapp'


 class RealModel(AbstractModel):
     other_field = models.CharField(max_length=100)

     class Meta:
         app_label = 'myapp'


 ffield = AbstractModel._meta.get_field('field')
 # ValueError: Related model 'ReferencedModel' cannot be resolved
 print(ffield.target_field)
 }}}

--
Ticket URL: <https://code.djangoproject.com/ticket/29466>
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 [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/050.d651307b32eebbd7b8e99886d0b956c7%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Django] #29466: Textual "to" parameter of ForeignKey fails to resolve if placed in abstract model

Django
#29466: Textual "to" parameter of ForeignKey fails to resolve if placed in abstract
model
-------------------------------------+-------------------------------------
     Reporter:  Vitalik Verhovodov   |                    Owner:  nobody
         Type:  Bug                  |                   Status:  new
    Component:  Database layer       |                  Version:  2.0
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:
     Keywords:                       |             Triage Stage:  Accepted
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by Tim Graham):

 * stage:  Unreviewed => Accepted


Comment:

 Reproduced at 741792961815cf4a95c5ce8ab590dfc7700c6153.

--
Ticket URL: <https://code.djangoproject.com/ticket/29466#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 [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/065.bc14fa15373b6a29841398ae1d2493ec%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Django] #29466: Textual "to" parameter of ForeignKey fails to resolve if placed in abstract model

Django
In reply to this post by Django
#29466: Textual "to" parameter of ForeignKey fails to resolve if placed in abstract
model
-------------------------------------+-------------------------------------
     Reporter:  Vitalik Verhovodov   |                    Owner:  nobody
         Type:  Bug                  |                   Status:  new
    Component:  Database layer       |                  Version:  2.0
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:
     Keywords:                       |             Triage Stage:  Accepted
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

Comment (by Alexander Tatarinov):

 I will assume that this is intended behavior. According to #24215,
 abstract models does not register pending lookups into Apps registry. I
 have tried to implement it, but found an issue with recursive relations in
 abstract model - they cannot be resolved but it is valid to have them,
 because they can be resolved in concrete children classes. So for abstract
 models lazy-referenced relations should not be resolved. I would not
 change the triage stage as I am not sure about this.

--
Ticket URL: <https://code.djangoproject.com/ticket/29466#comment:2>
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 [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/065.2b17ee27684ca08e7811c473d4c24a2f%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Django] #29466: Textual "to" parameter of ForeignKey fails to resolve if placed in abstract model

Django
In reply to this post by Django
#29466: Textual "to" parameter of ForeignKey fails to resolve if placed in abstract
model
-------------------------------------+-------------------------------------
     Reporter:  Vitalik Verhovodov   |                    Owner:  nobody
         Type:  Bug                  |                   Status:  new
    Component:  Database layer       |                  Version:  2.0
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:
     Keywords:                       |             Triage Stage:  Accepted
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

Comment (by Vitalik Verhovodov):

 Sound reasonable, but what if I'm sure that all models are already loaded
 (e.g. during Command execution)? How can I manually resolve textual model
 name and target_field?

--
Ticket URL: <https://code.djangoproject.com/ticket/29466#comment:3>
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 [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/065.9d4638f8e73eebca3a0066aa518471d7%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.