How to get user__get_full_name while selecting .values() on any modal?
Pageview.objects.values('visitor__user__username').annotate(url_count=Count('url')).annotate(url_count_unique=Count('url', distinct=True))
I want to
Rename visitor__user__username to some alias for example user
Get user's full_name instead of username
Optimize the query if possible.
Thanks,
Get full name is a method on the user model and does not map directly to a db row attribute. You wont be able to get it with .values().
Related
Lets say i have 2 tables:
User (id, name)
Notes (id, userID, text)
Now i make a request to my API and supply the User ID. I want to change the text of a certain Note, but only if the User is also the author of that note.
Lets say my User ID is stored in a variable { uID } at the backend.
Do i have to query
"SELECT userID FROM Notes..."
first and compare the result to my uID variable and afterwards execute
"UPDATE Notes..." ?
It works, but it feels kind of wonky.
Is there a more elegant solution?
You can easily use a where clause:
UPDATE notes SET ... WHERE userID='uID'
I'm sorry if my question sounds confusing.I just started learning web2py recently,in this exercise I'm trying to make a simple users management webpage with the admin can assign the users theirs work lists,note and deadline
db.define_table('auth_manager',Field('name','string',requires=IS_NOT_EMPTY()))
db.define_table('manager',Field('user','string','reference user.name'),
Field('workname','text',requires=IS_NOT_EMPTY()),
Field('deadline','date'),)
db.manager.deadline.requires=IS_DATE_IN_RANGE(format=T('%Y-%m-%d'),
minimum=now,maximum=now+datetime.timedelta(60))
I thought of adding the manager's username in auth_manager table using appadmin's new record function.This is my user table
db.define_table('user',Field('name','string',requires=IS_NOT_EMPTY()),
Field('password','password'),
Field('workname','text'),
Field('deadline','date'),
format='%(name)s')
I wanted to insert workname and deadline into user table right after I add those form on manager but I couldn't find any other methods except the update or update_or_insert functions but both don't work because those fields can't be empty and their ids aren't the same value and multiple references to a single table don't work .
One last question,I want to use web2py's RBAC but the first & last name fields are often unnecessary if I want to use a full name field is there other way to do it?
Sorry for the long post,I hope I made my question clear.
You can use the tables from auth and let web2py to handle everything in between.
The following code should resolve your problem:
db.define_table('manager', 'reference auth_user'),
Field('workname', 'text', requires=IS_NOT_EMPTY()),
Field('deadline', 'date'))
I'm trying to get the user id's from twitter response (asking for several users)
https://dev.twitter.com/docs/api/1/get/users/lookup
But if i try
$.[*].id OR $..id
all fields with id (even nested fields) are retrieved.
How can i get the "id" field placed at first level?
I believe you would only get the first-level id's with the following query $[*].id. I believe this is what you were asking for; let me know if I misunderstood you.
I search my sql table using in:
videos.category in ($categoriesSelected)
I pass through the categories based on what a user selects. Sometimes when a user selects no categories I want all videos to be displayed, Ive tried changing the $categoriesSelected var to * but no luck.
Will I have to do a seperate query taking out 'in' for when I want to display all, or is there a way to change $categoriesSelected to display all? Note, I do not want to just prefil it with the names of all my categories as this constantly changes via a CMS.
If your query is built dynamically and you happen to not escape the value of $categoriesSelected
you could try videos.category IN (videos.category).
Note: this is a dummy hack and you better rewrite the whole section of code that builds the query.
You must do a check to see if something is in $categoriesSelected - if yes then do your actual query, else do the query without the IN clause
Try putting in 'SELECT category FROM categories' for your $categoriesSelected.
Change category to be the field name that stores your category name.
I'm making a student management system on apex. The short of it is a place where lecturers and students can log on. Lecturers create assignments, assign them, mark them, take attendance, record issues ...... all that, and students log on to view their attendance and results.
Now when a student clicks the "My Results" link it navigates to the same page that a lecturer sees, though the select list where a student is selected to view the results of is hidden. The select list displays the students name and returns the id for that student, which also happens to be the user name for a student to log in.
So i want to pass the value of the app-user when a student clicks the link so that only their results are shown.
I've tried to set
these items
:P10_SELECT_STUDENT
with these values
#APP_USER#
which works but no the message "no data found" is shown.
Just for testing i've set that select list to be displayed for a student, and when the page loads it loads with the null value at the top of the list which is
display value
select a student
return value
-1
I've gone and manually set the value passed to be the id of the test student. works a treat, the data loads for that student!!
So does anyone know why the #APP_USSER# value im sending isnt being set in the listbox
Thanks in advance
What you need is the session state of the APP_USER variable. In a query you would reference this with :APP_USER. When you need to pass on the value as a parameter for, for example, a link, you would use the substitution string notation &APP_USER. Much the same way you would refer any other variable/page item.
For example, setting up a button:
A good page to read up on Substitution strings: Application Builder Concepts
The hash-sign notation is commonly used for non-plsql-variables substitution, like the value of a column in report when passed through in a link,
Zac,
If the users haven't authenticate themselves then the :APP_USER parameter is null. If the user authenticated via a SSO, or via DB credentials or whatever you have in the application then the :APP_USER will get populated.
Here is what i understood :
In page 12 , P12_STUDENTS is a select list, and you want it to reflect the current student if he enters or the full list if he's a teacher right?
You don't need to pass :APP_USER via a link or a branch or whatever. It exists as a global Apex variable and is visible in page 12 via :APP_USER but again , its null if the user is not authenticated.
Your select list source should be like:
select display d, return r
from table
where (:APP_USER is NULL
OR (:APP_USER IS NOT NULL AND :APP_USER = student))
tell me if this helps?
regards,
Alex