Я создаю школьной концентратор на основе флэк , где учителя могут создавать задания, но после успешного создания задания это не появляется на панели панели учителя . < /h3>
Учитель создает задание. < /li>
Назначение хранится в базе данных. >
текущая проблема < /strong> < /h3>
Назначения успешно сохранить < /strong> в базе данных (подтверждено через db.session.query (назначение) .all () ).
class Assignment(db.Model):
__tablename__ = 'assignments'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255), nullable=False)
description = db.Column(db.Text)
due_date = db.Column(db.Date)
teacher_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
class_id = db.Column(db.Integer, db.ForeignKey('classes.id'), nullable=False)
teacher = db.relationship('User', back_populates='teacher_assignments')
class_info = db.relationship('Class', back_populates='assignments')
< /code>
[b] маршрут создания назначения < /strong> < /h3>
@main.route('/create_assignment', methods=['POST'])
@login_required
def create_assignment():
if current_user.role != 'teacher':
return jsonify({'success': False, 'message': 'Unauthorized'}), 403
data = request.get_json()
title, description, due_date, class_code = data.get('title'), data.get('description'), data.get('due_date'), data.get('class_code')
if not title or not description or not due_date or not class_code:
return jsonify({'success': False, 'message': 'All fields are required.'}), 400
try:
due_date_obj = datetime.strptime(due_date, '%Y-%m-%dT%H:%M')
except ValueError:
return jsonify({'success': False, 'message': 'Invalid date format.'}), 400
class_entry = Class.query.filter_by(id=class_code).first()
if not class_entry:
return jsonify({'success': False, 'message': 'Invalid class code.'}), 404
new_assignment = Assignment(
name=title,
description=description,
due_date=due_date_obj,
teacher_id=current_user.id,
class_id=class_entry.id
)
db.session.add(new_assignment)
db.session.commit()
return jsonify({'success': True, 'message': 'Assignment created successfully!'}), 200
< /code>
извлечение заданий (для панели панели учителя) < /strong> < /h3>
@main.route('/get_teacher_assignments', methods=['GET'])
@login_required
def get_teacher_assignments():
if current_user.role != 'teacher':
return jsonify({"success": False, "message": "Unauthorized"}), 403
assignments = (
db.session.query(
Assignment.id, Assignment.name, Assignment.description, Assignment.due_date,
Class.name.label("class_name"), User.username.label("teacher_username")
)
.join(Class, Assignment.class_id == Class.id)
.join(User, Assignment.teacher_id == User.id)
.filter(Assignment.teacher_id == current_user.id)
.order_by(Assignment.due_date)
.all()
)
return jsonify({
"success": True,
"assignments": [
{
"id": a.id, "name": a.name, "description": a.description,
"due_date": a.due_date.strftime("%Y-%m-%d %H:%M"),
"class_name": a.class_name, "teacher_username": a.teacher_username
} for a in assignments
]
})
< /code>
frontend (ajax fetch call) < /strong> < /h3>
$(document).ready(function() {
function fetchAssignments() {
$('#loadingSpinner').show();
$('#assignmentList').hide();
$.ajax({
url: '/get_teacher_assignments',
method: 'GET',
success: function(response) {
$('#assignmentList').empty();
if (response.success && response.assignments.length > 0) {
response.assignments.forEach(assignment => {
$('#assignmentList').append(`
${assignment.name}
Class:[/b] ${assignment.class_name}
[b]Teacher:[/b] ${assignment.teacher_username}
[b]Description:[/b] ${assignment.description}
[b]Due Date:[/b] ${assignment.due_date}
`);
});
} else {
$('#assignmentList').append('
No assignments found.
');
}
$('#loadingSpinner').hide();
$('#assignmentList').show();
},
error: function(xhr, status, error) {
console.error('Error fetching assignments:', error);
$('#loadingSpinner').hide();
}
});
}
fetchAssignments();
});
< /code>
[b] шаги отладки Проверенная база данных [/b]-назначение [b] хранится правильно [/b] при запросе вручную:
print(db.session.query(Assignment).all())
проверенные отношения - учитель_ид правильно отображается с current_user.id . проверенный ответ API -/get_teacher_assignments Возвращает пустой список , несмотря на наличие назначений.
проверенный идентификатор класса фильтрация < /strong> - class_id < /code> существует и правильно назначена. < /li>
< /ol>
Есть ли потенциальная проблема с операторами соединения, которые могут исключить допустимые записи? [/b]
< li> Может ли возникнуть проблема с current_user.id не совпадать с сохраненным учителем_ид ?
Я создаю школьной концентратор на основе флэк , где учителя могут создавать задания, но после успешного создания задания это [b] не появляется на панели панели учителя [/b]. < /h3> [list] [*] Учитель создает задание. < /li> Назначение хранится в базе данных. > текущая проблема < /strong> < /h3>
Назначения успешно сохранить < /strong> в базе данных (подтверждено через db.session.query (назначение) .all () ). [*][code]teacher_id[/code] правильно присваивается на current_user.id . [*] the/get_teacher_assignments api Возвращает пустой список [/b], значение для назначений. 'T извлечен. H3> [b] модель назначения (sqlalchemy) [/b] [code]class Assignment(db.Model): __tablename__ = 'assignments' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), nullable=False) description = db.Column(db.Text) due_date = db.Column(db.Date) teacher_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) class_id = db.Column(db.Integer, db.ForeignKey('classes.id'), nullable=False)
class_entry = Class.query.filter_by(id=class_code).first() if not class_entry: return jsonify({'success': False, 'message': 'Invalid class code.'}), 404
[b] шаги отладки Проверенная база данных [/b]-назначение [b] хранится правильно [/b] при запросе вручную: print(db.session.query(Assignment).all()) [/code]
[*] [b] проверенные отношения [/b] - учитель_ид правильно отображается с current_user.id . [b] проверенный ответ API [/b] -/get_teacher_assignments [b] Возвращает пустой список [/b], несмотря на наличие назначений. [*] [b] проверенный идентификатор класса фильтрация < /strong> - class_id < /code> существует и правильно назначена. < /li> < /ol>
возможные причины и вопросы < /strong> < /h2> [list] - фильтр (назначение. /code> Условие неправильно? переопределить ">[code]db.session.expire_all() [/code]
[*] Есть ли потенциальная проблема с операторами соединения, которые могут исключить допустимые записи? [/b] < li> [b] Может ли возникнуть проблема с current_user.id не совпадать с сохраненным учителем_ид ? [/b] [/list] [b] Что я попробовал и ожидали результаты [/b] [list] [*] [b] Проверено, если назначения сохранены правильно [/b] ✅
[b] Query: [/b] print (db.session.query (назначение) .all ()) [*] [b] Результат: [/b] назначения [b] существуют в базе данных [/b] с правильным учителем_ид и class_id . [*] [b] ожидается: [/b] Поскольку данные хранятся должным образом, они должны появляться на панели инструментов учителя. [/list]
< li> [b] проверенный ответ API < /strong> 🔍 < /p> [list] [*] запрос: < /strong> отправил запрос на получение /get_teacher_assignments . [*] result: [/b] API возвращает {"успех": true, "назначения": []} (пустой список) . [*] [b] ожидается: [/b] API должен вернуть все задания, созданные в регистрации учителя. [/list] < /li> [*] [b] запрашиваемые вручную назначения в Flask Shell < /strong> 🖥 < /p> [list] Запрос: < /strong> [code]db.session.query(Assignment).filter_by(teacher_id=current_user.id).all() [/code]
[*] Результат: [/b] не обнаружено, несмотря на то, что они присутствуют в базе данных. [*] [b] ожидается: [/b] Запрос должен вернуть все задания для регистрированного учителя. [/list]
[*] [b] проверяется, если current_user.id соответствует учителю_ид [/b] 🆔 [list] [b] Query: < /strong> [code]print(f"Current User ID: {current_user.id}") print(f"Stored Teacher IDs: {[a.teacher_id for a in db.session.query(Assignment).all()]}") [/code]
[*] result: [/b] current_user.id соответствует существующему учителю_ид , что означает фильтрацию [b] должен работать [/b]. [*] [b] ожидается: [/b] Запрос должен вернуть назначения для учителя, но это не так. < /ul> < /li> [*] [b] попытаться освежить Sqlalchemy Session < /strong> 🔄 < /p>
Попытка кода: < /strong> [code]db.session.expire_all() assignments = db.session.query(Assignment).filter_by(teacher_id=current_user.id).all() [/code]
[*] Результат: [/b] по -прежнему возвращает пустой список. [*] [b] Ожидаемое: [/b] Если бы это была проблема сеанса, это должно было обновить данные. [/list]
[/list]
[b] окончательные мысли < /strong> < /h3> Поскольку задания существуют , но не получают < /strong>, я подозреваю : < /p> [list] [*] проблема фильтрации в запросе ([code]filter(Assignment.teacher_id == current_user.id)[/code]) [/b] [*] [b] Проблема сеанса SQLalchemy, где данные не обновляются должным образом [/b] [*] [b] проблема с тем, как current_user.id получена (даже если она печатается правильно) [/b] [/list]
Я разрабатываю приложение для школьного концентратора , где учителя могут , которые присоединились к ученикам, которые присоединились к классу , используя код класса и назначают задания. Тем не менее, следующие функции в моей панели управления...
Я разрабатываю приложение для школьного концентратора , где учителя могут , которые присоединились к ученикам, которые присоединились к классу , используя код класса и назначают задания. Тем не менее, следующие функции в моей панели управления...
При использовании системной трассировки можно увидеть, сколько времени ушло на создание кадра. Можно ли как-то записать все кадры (содержимое кадра/например, снимок экрана), нарисованные моим приложением, вместе с системной трассировкой? Облегчило...
При использовании системной трассировки можно увидеть, сколько времени ушло на создание кадра. Можно ли как-то записать все кадры (содержимое кадра/например, снимок экрана), нарисованные моим приложением, вместе с системной трассировкой? Облегчило...
В проекте iOS, построенном через Xcode с React-Cnative-Fs с голой рабочим потоком, используя новейший симулятор iOS 18 iPhone 18:
, чтобы сказать заранее: Эта проблема, по -видимому, является исключительно новой для выпуска iOS 18, поскольку...