Reverse relation lookups with multidb

36 views
Skip to first unread message

probleem support

unread,
Oct 24, 2015, 8:25:48 AM10/24/15
to Django users
i got an issue with reverse lookups when using any database other the the default one in django 1.8.5
any test i do on the default database work fine.

for example on the default database

testthis = Staffel.objects.values('user__userprofile__geslacht')[:1]
for test in testthis:
   
print(test['user__userprofile__geslacht'])

This works.



Example on one of the other databases

nieuweklanten = ProfielenUserprofile.objects.values('user__profielenprofielen_set__profielnaam')[:1]
for nieuwe in nieuweklanten:
   
print(nieuwe['user__profielenprofielen_set__profielnaam'])


This fails with:
django.core.exceptions.FieldError: Cannot resolve keyword 'profielenprofielen_set' into field. Choices are: date_joined, email, first_name, id, is_active, is_staff, is_superuser, last_login, last_name, password, username



The database router for this database

Geef de code hier op...class DatingRouter(object):
    def db_for_read(self, model, **hints):
if model._meta.app_label == 'datingmodels':
return 'dating'
return 'default'

def db_for_write(self, model, **hints):
if model._meta.app_label == 'datingmodels':
return 'dating'
return 'default'

def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == 'datingmodels' and obj2._meta.app_label == 'datingmodels':
return True
elif 'datingmodels' not in [obj1._meta.app_label, obj2._meta.app_label]:
return True
return False

def allow_syncdb(self, db, model):
if db == 'dating' or model._meta.app_label == "datingmodels":
return False # we're not using syncdb on our legacy database
else: # but all other models/databases are fine
return True



Some of the models on for this database


class AuthUser(models.Model):
    password
= models.CharField(max_length=128)
    last_login
= models.DateTimeField()
    is_superuser
= models.BooleanField(default=False)
    username
= models.CharField(unique=True, max_length=30)
    first_name
= models.CharField(max_length=30)
    last_name
= models.CharField(max_length=30)
    email
= models.CharField(max_length=75)
    is_staff
= models.BooleanField(default=False)
    is_active
= models.BooleanField(default=True)
    date_joined
= models.DateTimeField(default=datetime.now())

   
class Meta:
        managed
= False
        db_table = 'auth_user'



class ProfielenProfielen(models.Model):
   
def save(self, *args, **kwargs):

        nu
= datetime.utcnow().replace(tzinfo=utc)
       
print('gebdatum:'+str(self.gebdatum)+' nu:'+str(nu))
        leeftijd
= human_age(self.gebdatum, nu)
       
self.leeftijd = leeftijd

       
super(ProfielenProfielen, self).save(*args, **kwargs)

    JANEE
= (
       
('Y',_('Ja')),
       
('N',_('Nee')),
   
)

    GENDER
= (
       
('Man',_('Man')),
       
('Vrouw',_('Vrouw')),
   
)

    HAARLENGTE
= (
       
('Halflang',_('Halflang')),
       
('Kaal',_('Kaal')),
       
('Kalend',_('Kalend')),
       
('Kort',_('Kort')),
       
('Lang',_('Lang')),
   
)

    POSTUUR
= (
       
('Atletisch',_('Atletisch')),
       
('Breed',_('Breed')),
       
('Buikje',_('Buikje')),
       
('Dik',_('Dik')),
       
('Mollig',_('Mollig')),
       
('Normaal',_('Normaal')),
       
('Slank',_('Slank')),
       
('Sportief',_('Sportief')),
       
('Stevig',_('Stevig')),
       
('Volslank',_('Volslank')),
   
)


    IKVOELME
= (
       
('Jongen',_('Jongen')),
       
('Kerel',_('Kerel')),
       
('Meester',_('Meester')),
       
('Meesteres',_('Meesteres')),
       
('Meisje',_('Meisje')),
       
('Mietje',_('Mietje')),
       
('Slet',_('Slet')),
       
('Vrouw',_('Vrouw')),
   
)

    INTER
= (
       
('Mannen',_('Mannen')),
       
('Vrouwen',_('Vrouwen')),
       
('Mannen en Vrouwen',_('Mannen en Vrouwen')),
   
)

    LENGTE
= tuple(
       
("%d cm" % weight, "%d cm" % weight) for weight in range(130, 250)
   
)

    user
= models.OneToOneField(AuthUser, unique=True, blank=True, null=True, on_delete=models.SET_NULL)
    profielnaam
= models.CharField(unique=True, max_length=255)

   
# profielgegevens
    adult = models.CharField(max_length=2, choices=JANEE, blank=True, null=True)
    issoort
= models.CharField(max_length=10, choices=GENDER, default='Man', blank=True, null=True)
    ikvoelme
= models.CharField(max_length=55, choices=IKVOELME, blank=True, null=True)
    zoektsoort
= models.CharField(max_length=55, choices=GENDER, default='Vrouw', blank=True, null=True)
    inter
= models.CharField(max_length=55, choices=INTER, blank=True, null=True)
    doel
= models.ForeignKey(ProfielenDoelData, blank=True, null=True)
    partner
= models.CharField(max_length=2, choices=JANEE, blank=True, null=True)

   
#persoonsgegevens
    gebdatum = models.DateField(blank=True, null=True)
    gebdone
= models.DateField(blank=True, null=True)
    land
= models.ForeignKey(ProfielenLanden, blank=True, null=True)
    regio
= models.ForeignKey('ProfielenRegio', blank=True, null=True)
    afkomst
= models.ForeignKey(ProfielenAfkomstData, blank=True, null=True)
    postuur
= models.CharField(max_length=20, choices=POSTUUR, blank=True, null=True)
    lengte
= models.CharField(max_length=20, choices=LENGTE, blank=True, null=True)
    haarkleur
= models.ForeignKey(ProfielenHaarkleurData, blank=True, null=True)
    lengtehaar
= models.CharField(max_length=20, choices=HAARLENGTE, blank=True, null=True)
    haarstijl
= models.ForeignKey(ProfielenHaarstijlData, blank=True, null=True)
    kleurogen
= models.ForeignKey(ProfielenKleurogenData, blank=True, null=True)


   
# Elke in een blok
    burgelijkestaat = models.ManyToManyField(ProfielenProfielenBurgelijkestaat, blank=True)
    opleidingsniveau
= models.ManyToManyField(ProfielenProfielenOpleidingsniveau, blank=True)
    levensstijl
= models.ManyToManyField(ProfielenProfielenLevensstijl, blank=True)
    uiterlijkekenmerken
= models.ManyToManyField(ProfielenProfielenUiterlijkekenmerken, blank=True)
    belangstellingvoor
= models.ManyToManyField(ProfielenProfielenBelangstellingvoor, blank=True)
    sexvoorkeuren
= models.ManyToManyField(ProfielenProfielenSexvoorkeuren, blank=True)


    profielfoto
= models.ForeignKey('ProfielenProfielfoto', blank=True, null=True)

    likes
= models.IntegerField(default=0)
    views
= models.IntegerField(default=0)
    percent_complete
= models.DecimalField(max_digits=5, decimal_places=2, default=0)
    leeftijd
= models.IntegerField(default=0)
    zodiac
= models.CharField(max_length=255, blank=True)
    belangrijk
= models.BooleanField(default=False)
    assigned
= models.IntegerField(default=0, blank=True, null=True)
    assignednaam
= models.CharField(max_length=255, blank=True, null=True)
    locked
= models.IntegerField(default=0, blank=True, null=True)
    lockednaam
= models.CharField(max_length=255, blank=True, null=True)
    extrainfo
= models.TextField(blank=True, null=True)
    reactiemail
= models.TextField(blank=True, null=True)
    omschrijving2
= models.TextField(blank=True, null=True)
    postcode
= models.CharField(max_length=255,blank=True, null=True)
    gecontroleerd
= models.BooleanField(default=False)
    promo
= models.BooleanField(default=False)
    lockadult
= models.BooleanField(default=False)
   
#werkblad pobb only
    werk = models.CharField(max_length=255, blank=True, null=True)
    woonplaats
= models.CharField(max_length=255, blank=True, null=True)
    naam
= models.CharField(max_length=255, blank=True, null=True)
    reviewed
= models.BooleanField(default=True)

   
class Meta:
        managed
= False
        db_table = 'profielen_profielen'
        verbose_name = "Profiel"
        verbose_name_plural = "Profielen"

    def profielbezoeken(self):
        bezoeken
= ProfielenProfielstats.objects.filter(profiel_id=self.id).distinct('user')
        count
= bezoeken.count()
       
return count

   
def profielflirts(self):
        bezoeken
= ProfielenFlirts.objects.filter(voor_id=self.id).distinct('user')
        count
= bezoeken.count()
       
return count

   
def profielfavs(self):
        bezoeken
= ProfielenFavorieten.objects.filter(favoriet_id=self.id).distinct('user')
        count
= bezoeken.count()
       
return count

   
def iscompleet(self):
       
if "temp99" not in self.profielnaam:
           
if self.adult and self.issoort and self.zoektsoort and self.ikvoelme and self.inter and self.doel and self.partner and self.land and self.afkomst and self.lengte and self.lengtehaar and self.kleurogen and self.regio and self.postuur and self.haarkleur and self.haarstijl:
                compleet
= True
            else:
                compleet
= False
        else:
            compleet
=False

        return compleet

   
def setbonus(self, request, naam, hoeveel, van, voor):
       
if naam:
           
try:
                hetprofiel
= ProfielenProfielen.objects.get(profielnaam__icontains=naam)
                hetprofiel
.user.profielenuserprofile.freeemail = hetprofiel.user.profielenuserprofile.freeemail + int(hoeveel)
                hetprofiel
.user.profielenuserprofile.save()

               
# insert bonustegoed

                ContactenBonustegoed.objects.create(van_id=van, voor_id=hetprofiel.id,
                                                   
maxemail=hetprofiel.user.profielenuserprofile.maxemail,
                                                   
aantal=hoeveel, tijdstempel=datetime.now(), gezien=False)

               
# send email

                if hetprofiel.user.profielenuserprofile.fictief == False:
                   
if hetprofiel.user.profielenuserprofile.emailontvangen == True:
                       
if hetprofiel.user.profielenuserprofile.validemail == True:
                            delink
= "https://" + str(hetprofiel.user.profielenuserprofile.domein.site) + "/"

                            if hetprofiel.user.profielenuserprofile.domein.sitetaal == "Engels":
                                subject2
= 'U recieved free bonus credits'
                                message2 = "U recently recieved free credis. \n " + delink + ""
                            else:
                                subject2
= 'Er is gratis tegoed aan je account toegevoegd'
                                message2 = "Er is gratis tegoed aan je account toegevoegd \n " + delink + ""

                            ProfielenBerichtenlog.objects.get_or_create(to_address=hetprofiel.user.email,from_address=hetprofiel.user.profielenuserprofile.domein.smtpuser,subject=subject2,message_body=message2,when_added=datetime.now(),sitedetails=hetprofiel.user.profielenuserprofile.domein)

                        messages
.add_message(request, messages.INFO, 'Tegoed verzonden')

           
except Exception as e:
                tb
= sys.exc_info()[2]
               
print tb.tb_lineno
               
print 'bonustegoed %s (%s)' % (e.message, type(e))
                messages
.add_message(request, messages.INFO, 'Profielnaam niet gevonden')

       
elif voor == 'iedereen':
            profielen
= ProfielenProfielen.objects.filter(user__profielenuserprofile__fictief=False)
           
for prof in profielen:
               
try:
                    hetprofiel
= prof
                    hetprofiel
.user.profielenuserprofile.freeemail = hetprofiel.user.profielenuserprofile.freeemail + int(hoeveel)
                    hetprofiel
.user.profielenuserprofile.save()

                   
# insert bonustegoed

                    ContactenBonustegoed.objects.create(van_id=van, voor_id=hetprofiel.id,
                                                       
maxemail=hetprofiel.user.profielenuserprofile.maxemail,
                                                       
aantal=hoeveel, tijdstempel=datetime.now(), gezien=False)

                   
# send email

                    if hetprofiel.user.profielenuserprofile.fictief == False:
                       
if hetprofiel.user.profielenuserprofile.emailontvangen == True:
                           
if hetprofiel.user.profielenuserprofile.validemail == True:
                                delink
= "https://" + str(hetprofiel.user.profielenuserprofile.domein.site) + "/"

                                if hetprofiel.user.profielenuserprofile.domein.sitetaal == "Engels":
                                    subject2
= 'U recieved free bonus credits'
                                    message2 = "U recently recieved free credis. \n " + delink + ""
                                else:
                                    subject2
= 'Er is gratis tegoed aan je account toegevoegt'
                                    message2 = "Er is gratis tegoed aan je account toehevoegt \n " + delink + ""

                                ProfielenBerichtenlog.objects.get_or_create(to_address=hetprofiel.user.email,from_address=hetprofiel.user.profielenuserprofile.domein.smtpuser,subject=subject2,message_body=message2,when_added=datetime.now(),sitedetails=hetprofiel.user.profielenuserprofile.domein)



                            messages
.add_message(request, messages.INFO, 'Tegoed verzonden')

               
except Exception as e:
                    tb
= sys.exc_info()[2]
                   
print tb.tb_lineno
                   
print 'bonustegoed %s (%s)' % (e.message, type(e))
                    messages
.add_message(request, messages.INFO, 'Profielnaam niet gevonden')


       
elif voor == 'klanten':
            profielen
= ProfielenProfielen.objects.filter(user__profielenuserprofile__fictief=False, user__profielenuserprofile__omzet__gt=50)
           
for prof in profielen:
               
try:
                    hetprofiel
= prof
                    hetprofiel
.user.profielenuserprofile.freeemail = hetprofiel.user.profielenuserprofile.freeemail + int(hoeveel)
                    hetprofiel
.user.profielenuserprofile.save()

                   
# insert bonustegoed

                    ContactenBonustegoed.objects.create(van_id=van, voor_id=hetprofiel.id,
                                                       
maxemail=hetprofiel.user.profielenuserprofile.maxemail,
                                                       
aantal=hoeveel, tijdstempel=datetime.now(), gezien=False)

                   
# send email

                    if hetprofiel.user.profielenuserprofile.fictief == False:
                       
if hetprofiel.user.profielenuserprofile.emailontvangen == True:
                           
if hetprofiel.user.profielenuserprofile.validemail == True:
                                delink
= "https://" + str(hetprofiel.user.profielenuserprofile.domein.site) + "/"

                                if hetprofiel.user.profielenuserprofile.domein.sitetaal == "Engels":
                                    subject2
= 'U recieved free bonus credits'
                                    message2 = "U recently recieved free credis. \n " + delink + ""
                                else:
                                    subject2
= 'Er is gratis tegoed aan je account toegevoegt'
                                    message2 = "Er is gratis tegoed aan je account toehevoegt \n " + delink + ""

                                sender2 = 'nor...@datinggegevens.nl'
                                recipients2 = [hetprofiel.user.email, ]
                               
ProfielenBerichtenlog.objects.get_or_create(to_address=hetprofiel.user.email,from_address=hetprofiel.user.profielenuserprofile.domein.smtpuser,subject=subject2,message_body=message2,when_added=datetime.now(),sitedetails=hetprofiel.user.profielenuserprofile.domein)


                            messages
.add_message(request, messages.INFO, 'Tegoed verzonden')

               
except Exception as e:
                    tb
= sys.exc_info()[2]
                   
print tb.tb_lineno
                   
print 'bonustegoed %s (%s)' % (e.message, type(e))
                    messages
.add_message(request, messages.INFO, 'Profielnaam niet gevonden')





       
elif voor.isnumeric() == True:
           
try:
                hetprofiel
= ProfielenProfielen.objects.get(id=voor)
                hetprofiel
.user.profielenuserprofile.freeemail = hetprofiel.user.profielenuserprofile.freeemail + int(hoeveel)
                hetprofiel
.user.profielenuserprofile.save()

               
# insert bonustegoed

                ContactenBonustegoed.objects.create(van_id=van, voor_id=hetprofiel.id,
                                                   
maxemail=hetprofiel.user.profielenuserprofile.maxemail,
                                                   
aantal=hoeveel, tijdstempel=datetime.now(), gezien=False)

               
# send email

                if hetprofiel.user.profielenuserprofile.fictief == False:
                   
if hetprofiel.user.profielenuserprofile.emailontvangen == True:
                       
if hetprofiel.user.profielenuserprofile.validemail == True:
                            delink
= "https://" + str(hetprofiel.user.profielenuserprofile.domein.site) + "/"

                            if hetprofiel.user.profielenuserprofile.domein.sitetaal == "Engels":
                                subject2
= 'U recieved free bonus credits'
                                message2 = "U recently recieved free credis. \n " + delink + ""
                            else:
                                subject2
= 'Er is gratis tegoed aan je account toegevoegt'
                                message2 = "Er is gratis tegoed aan je account toehevoegt \n " + delink + ""

                            sender2 = 'nor...@datinggegevens.nl'
                            recipients2 = [hetprofiel.user.email, ]
                           
ProfielenBerichtenlog.objects.get_or_create(to_address=hetprofiel.user.email,from_address=hetprofiel.user.profielenuserprofile.domein.smtpuser,subject=subject2,message_body=message2,when_added=datetime.now(),sitedetails=hetprofiel.user.profielenuserprofile.domein)

                        messages
.add_message(request, messages.INFO, 'Tegoed verzonden')

           
except Exception as e:
                tb
= sys.exc_info()[2]
               
print tb.tb_lineno
               
print 'bonustegoed %s (%s)' % (e.message, type(e))
                messages
.add_message(request, messages.INFO, 'Profielnaam niet gevonden')


   
def minifoto(self):
       
try:
           
return mark_safe(
               
"<img src=\"https://www.directopdate.nl/profielen/callimage/{0}/\" width=\"25\" heigth=\"25\">".format(
                   
self.id))
       
except:
           
return mark_safe("geen")

   
def optie(self):
       
print(type(self.locked))
       
try:
           
if int(self.locked):
                locklink
="<a href=\"javascript:unlock4('{0}');\" class=\"paklinks\"><img src=\"/static/images/lockdown.png\" width=\"15\" height=\"15\" style=\"display: inline-block;\"></a>".format(self.pk)
           
else:
                locklink
=""
        except:
            locklink
=""

        return mark_safe(
           
"<a href=\"/actieveleden/profiel/{0}/\"><img src=\"/static/images/schrijfnu.png\" width=\"17\" heigth=\"17\" style=\"display: inline-block;\"></a> <a href=\"/trigger/trigger/{0}/\"><img src=\"/static/images/aanmeld.png\" width=\"17\" height=\"17\" style=\"display: inline-block;\"></a>"
            "<a href=\"/setmlog/{2}/\"><img src=\"/static/images/key.ico\" width=\"19\" height=\"19\" style=\"display: inline-block;\"></a>".format(
               
self.id, self.user.profielenuserprofile.domein.site, self.user.profielenuserprofile.token)+locklink)

   
def checkbox(self):
       
if self.gecontroleerd == True:
           
checked="<span id=\"check{0}\"><a href=\"javascript:uncheck('check{0}');\" class=\"paklinks\"><img src=\"/static/images/checkbox.png\" width=\"15\" height=\"15\" style=\"display: inline-block;\"></a></span>".format(self.pk)
       
else:
           
checked="<span id=\"check{0}\"><a href=\"javascript:check('check{0}');\" class=\"paklinks\"><img src=\"/static/images/checkbox2.png\" width=\"15\" height=\"15\" style=\"display: inline-block;\"></a></span>".format(self.pk)

       
return mark_safe(checked)

   
def profielmail(self, profiel,vanprofiel):
       
if not profiel == vanprofiel:
           
hetdomein = ProfielenSitedetails.objects.filter(id=profiel.user.profielenuserprofile.domein_id).first()

           
if vanprofiel.user.profielenuserprofile.onlineemail() == True:
               
if vanprofiel.user.profielenuserprofile.fictief == False:
                   
if vanprofiel.user.profielenuserprofile.emailontvangen == True:
                       
if vanprofiel.user.profielenuserprofile.emailprofiel == True:
                           
if vanprofiel.user.profielenuserprofile.validemail == True:

                                delink
="https://"+vanprofiel.user.profielenuserprofile.domein.site+"/accounts/profielstats/"
                                context = {'sitenaam':vanprofiel.user.profielenuserprofile.domein.site,'van':profiel.profielnaam,'delink':delink,'username':vanprofiel.user.username}

                               
if "nl" in profiel.user.profielenuserprofile.usertaal:
                                    onderwerp
="{0}: {1} heeft je profiel bekeken".format(vanprofiel.user.profielenuserprofile.domein.site,profiel.profielnaam)
                                   
ProfielenBerichtenlog.objects.get_or_create(to_address=vanprofiel.user.email,from_address=vanprofiel.user.profielenuserprofile.domein.smtpuser,subject=onderwerp,message_body=render_to_string('email/profielbekeken.html', context),when_added=datetime.now(),sitedetails=vanprofiel.user.profielenuserprofile.domein)
                               
else:
                                    onderwerp
="{0}: {1} visited your profile".format(vanprofiel.user.profielenuserprofile.domein.site,profiel.profielnaam)
                                   
ProfielenBerichtenlog.objects.get_or_create(to_address=vanprofiel.user.email,from_address=vanprofiel.user.profielenuserprofile.domein.smtpuser,subject=onderwerp,message_body=render_to_string('email/profielbekeken-en.html', context),when_added=datetime.now(),sitedetails=vanprofiel.user.profielenuserprofile.domein)


   
def belangrijker(self, wat):
       
print('IN MODEL' + str(self.id))
       
if wat == "uit":
           
print('uit')
           
self.belangrijk = False
            self.save()
       
else:
           
print('aan')
           
self.belangrijk = True
            self.save()


   
def unlock2(self):
       
self.locked = None
        self.lockednaam = ""
        self.save()

   
def pakbericht2(self, request):
       
self.assigned = request.user.id
       
self.assignednaam = request.user.username
       
self.save()

   
def assign2(self, request):
       
if request.POST:
            setnaam
= request.POST['setnaam']

           
if setnaam == "":
               
self.assigned = None
                self.assignednaam = ""
                self.save()

           
else:
                deuser
= User.objects.get(username=setnaam)
               
self.assigned = deuser.id
               
self.assignednaam = deuser.username
               
self.save()




class ProfielenUserprofile(models.Model):
    user
= models.OneToOneField(AuthUser, unique=True, blank=True, null=True, on_delete=models.SET_NULL)
    ipnummer
= models.CharField(max_length=25, blank=True)
    mood_id
= models.IntegerField()
    fictief
= models.BooleanField()
    emailontvangen
= models.BooleanField(default=False)
    ontvangonline
= models.BooleanField(default=False)
    favs
= models.IntegerField(default=0)
    fans
= models.IntegerField(default=0)
    freeemail
= models.IntegerField(default=0)
    maxemail
= models.IntegerField(default=0)
    ob
= models.IntegerField(default=0)
    vb
= models.IntegerField(default=0)
    freeemail
= models.IntegerField(default=0)
    maxemail
= models.DecimalField(max_digits=10, decimal_places=2, default=0)
    omzet
= models.DecimalField(max_digits=10, decimal_places=2, default=0)
    lastpage
= models.TextField(blank=True)
    lastpath
= models.TextField(blank=True)
    memberstatus
= models.CharField(max_length=255, blank=True)
    lastin
= models.DateTimeField(blank=True, null=True)
    lastout
= models.DateTimeField(blank=True, null=True)
    lastflirt
= models.DateTimeField(blank=True, null=True)
    dood
= models.BooleanField(default=False)
    opgezegt
= models.BooleanField(default=False)
    emailprofiel
= models.BooleanField(default=False)
    emailfan
= models.BooleanField(default=False)
    emailbericht
= models.BooleanField(default=False)
    emailtoken
= models.BooleanField(default=True)
    via
= models.CharField(max_length=255, blank=True)
    refferal
= models.CharField(max_length=255, blank=True)
    domein
= models.ForeignKey(ProfielenSitedetails, blank=True, null=True, on_delete=models.SET_NULL)
    contacten
= models.IntegerField(default=0)
    lastonline
= models.DateTimeField(blank=True, null=True)
    mobiel
= models.BooleanField(default=False)
    token
= models.CharField(max_length=255, blank=True, null=True)
    tokenvervaldatum
= models.DateTimeField(blank=True, null=True)
    triggercount
= models.IntegerField(default=0)
    geluid
= models.BooleanField(default=True, blank=True, null=True)
    ingedeeld
= models.BooleanField(default=False)
    zichtbaar
= models.ManyToManyField(ProfielenSitedetails, blank=True, null=True,related_name='zichtbaar')
    usertaal
= models.CharField(max_length=25, blank=True, null=True, default='nl')
    devicetoken
= models.TextField(blank=True, null=True)
    flirttegoed
= models.IntegerField(default=25)
    punten
= models.IntegerField(default=5)
    iospayed
= models.BooleanField(default=False)
    validemail
= models.BooleanField(default=False)
    bouncedemail
= models.BooleanField(default=False)
    premium
= models.DateTimeField(blank=True, null=True)

   
def onlineemail(self):
        verledendatum
= datetime.now() - timedelta(minutes=int(15))
       
try:
           
if self.ontvangonline == False and self.lastonline > verledendatum:
               
return False
            else:
               
return True
        except:
           
return True;

   
class Meta:
        managed
= False
        db_table = 'profielen_userprofile'


I been trying to figure this out for 2 days now.
Hope someone is able to point me in the right direction



probleem support

unread,
Oct 24, 2015, 8:45:52 AM10/24/15
to Django users
we also tried without _set etc.

Tim Graham

unread,
Oct 24, 2015, 9:01:06 AM10/24/15
to Django users
I don't think this has anything to do with multi-db. I'm not sure what that query is trying to accomplish. Can you simply use:

ProfielenUserprofile.objects.values('profielnaam')

You can't use values() across a reverse ForeignKey ("foo_set") as this might return multiple values.

probleem support

unread,
Oct 24, 2015, 9:11:27 AM10/24/15
to Django users
nieuweklanten = ProfielenUserprofile.objects.all()[:1]
for nieuwe in nieuweklanten:
   
print(nieuwe.user.profielenprofielen.profielnaam)

this for example works fine

 but doing the same thing but then like this with works fine on i do a similar test on the default db but it fails on anything other then the default db

probleem support

unread,
Oct 24, 2015, 9:13:01 AM10/24/15
to Django users
same for 
nieuweklanten = ProfielenUserprofile.objects.values('user__profielenprofielen__profielnaam')[:1]
for nieuwe in nieuweklanten:
   
print(nieuwe['user__profielenprofielen__profielnaam'])


probleem support

unread,
Oct 24, 2015, 9:13:42 AM10/24/15
to Django users
this worked fine in django 1.6.1  but fails in 1.8.5

Tim Graham

unread,
Oct 24, 2015, 9:24:38 AM10/24/15
to Django users
It would be helpful if you could create a minimal example project (without unnecessary fields and methods) with a test that passes on Django 1.6 but fails on Django 1.8.

probleem support

unread,
Oct 24, 2015, 9:26:05 AM10/24/15
to Django users
working on that

probleem support

unread,
Oct 27, 2015, 10:55:51 AM10/27/15
to Django users
test project proving my point

Tim Graham

unread,
Oct 27, 2015, 11:35:47 AM10/27/15
to Django users
As noted on the ticket, it looks like you're missing an app in INSTALLED_APPS.

probleem support

unread,
Oct 27, 2015, 11:56:03 AM10/27/15
to Django users
Tim in my real project that database is a remote database, that shouldn't be in installed apps shouldn't it.
but to prove my point it did it with 2 local databases in the test project.

in my real project i can't do reverse lookups on the remote database models.

Tim Graham

unread,
Oct 27, 2015, 12:01:03 PM10/27/15
to Django users
In order to use models and their relations you have to include them in INSTALLED_APPS regardless of which database they are stored in. This is noted in the 1.7 release notes: https://docs.djangoproject.com/en/1.8/releases/1.7/#app-registry-consistency

Maybe you don't want your local project to manage the schema of those models, in which case you should use Meta.managed=False.

probleem support

unread,
Oct 27, 2015, 12:46:48 PM10/27/15
to Django users
Thanks a lot tim, this has resolved the issue.
Lesson learned to jump from 1.6 to 1.8 go release by release.
then i would probably seen it.

Appreciated ur help do!
Reply all
Reply to author
Forward
0 new messages