Доступ к таблице в sqlite с помощью django и создание запроса
Я хочу получить доступ к данным из таблицы1, из моей базы данных и сделать запрос на основе другой таблицы, используя django. Например: получить доступ к данным из таблицы 1 (пользователь, дата, час:минуты, город, чек) и таблицы 2 (пользователь, дата: час:минуты, широта, долгота) и если час:минуты одинаковы в обеих таблицах, мне нужно обновить поле check со значением True.
Я пытался получить доступ к данным из таблицы table1 с помощью objects.filter on user, date, но я думаю, что это не очень хороший метод, потому что он не дает мне значения из строки. Я прочитал документацию с https://docs.djangoproject.com/en/4.0/topics/db/queries/#copying-model-instances, но у меня не получается сделать это правильно и закончить. И для второй части я думал сделать что-то с if, но все еще не уверен. В начале мне нужно получить доступ к данным из таблицы1.
Я не могу понять, откуда в строке user = User.objects.get(id = user_id) берется user_id. Идет ли он от reader или можно использовать user = request.user?
Если мои предположения верны, то я думаю, что вы можете сначала получить таблицы User, UserAcoount и Localization перед циклом for:
@login_required(login_url='login')
def uploadCoord_file_view(request):
# Get the user
user = request.user
# Access the Localization table of the specific user
localization = Localization.objects.get(user=request.user)
# Access the UserAccount (you did not provide that model, so I am guessing
user_account = UserAccount.objects.get(user=request.user)
...
Тогда вы можете выполнить сопоставление и обновление следующим образом:
###### Here I need to access the table Localization and create the query
# Filter all Coordinates that have the same date and user as the Localization table
coordinates = Coordinates.objects.filter(date=localization.date, user=user_account)
# Update the values of all the matches
coordinates.update(latitude='North', longitude='West')
Лучше всего поместить все запросы get в оператор try/except, иначе вы получите ошибку, если get вернет ни одного совпадения:
try:
# Access the Localization table of the specific user
localization = Localization.objects.get(user=request.user)
except Localization.DoesNotExist
# Code to handle what should happen if no match exists