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.
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