Я пытаюсь открыть объект в моем Django приложении / администраторе, но этот объект выдает мне ошибку 'datetime.time' object has no attribute 'date
, несмотря на то, что у меня нет специальных вызовов или переменных внутри модели, вот модель:
ВАЖНО : он работает нормально, как и ожидалось, при запуске сервера dev на 127.0.0.1:8000
, но не работает только на моем онлайн-VPS с apache сервером.
У меня есть ОБНОВЛЕННЫЕ КОДЫ, КОТОРЫЕ ЯВЛЯЮТСЯ
, удаляя поле времени и теперь использует только поле date_time.
class LeaveRequest(models.Model):
options = (
('Leave', 'Leave'),
('Absence', 'Absence'),
)
choices = (
('Approved', 'Approved'),
('Rejected', 'Rejected'),
('Pending', 'Pending'),
)
user = models.ForeignKey(User, related_name="leaverequest_user", on_delete=CASCADE)
employee = models.ForeignKey(Employee, related_name="leaverequest_employee", on_delete=CASCADE)
type = models.CharField(choices=options, max_length=50)
status = models.CharField(choices=choices, max_length=50)
text = models.CharField(max_length=500)
date_time = models.DateTimeField(auto_now_add=False, auto_now=False, null=True)
note Я добавляю поле данных и поле DateTime, потому что у меня есть 2 разных типа запросов, один из которых зависит только от даты, а другой - от даты и времени.
ОБНОВЛЕНИЕ
Я использую Django rest framework
вызовы API для создания этого объекта, вот код:
api.serializers.py
class RequestSerializers(serializers.ModelSerializer):
class Meta:
model = LeaveRequest
fields = ["user", "employee", "type", "status", "text", "date_time"]
api.views.py
@api_view(["POST", ])
def create_leave_request(request):
if request.method == 'POST':
username = request.data['username']
user_obj = User.objects.get(username=username)
employee_id = request.data['employee_id']
employee_obj = Employee.objects.get(id=employee_id)
the_type = request.data['type']
state = "Pending"
text = request.data['text']
date_time_qs = request.data['date_time']
date_time = datetime.datetime.strptime(date_time_qs, '%Y-%m-%d %H:%M')
LeaveRequest.objects.create(user=user_obj, employee=employee_obj, type=the_type, status=state, text=text,
date_time=date_time)
return Response(status=status.HTTP_201_CREATED)
А вот вызов API, поступающий из моего приложения flutter
android:
sendingRequest() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String username = prefs.getString('user');
int employee_id = prefs.getInt('id');
String url = 'https://www.g-attend.com/api/panel/request/create';
var client = Client();
await client.post(url, headers: {
"Authorization": "Basic Z19hdHRlbmRfYWRtaW5AZy1hdHRlbmQuY29tOllhaG9vMDAwQA==",
}, body: {
"username": username,
"employee_id": employee_id.toString(),
"type": "Leave",
"text": reasonController.text,
"date_time": "${_dateTime.year}-${_dateTime.month.toString().padLeft(
2, '0')}-${_dateTime.day.toString().padLeft(2, '0')} ${_dateTime.hour
.toString().padLeft(2, '0')}:${_dateTime.minute.toString().padLeft(
2, '0')}"
});
client.close();
Toast.show(
"Succesfuly sent Leave request on ${_dateTime.year}-${_dateTime.month
.toString().padLeft(2, '0')}-${_dateTime.day.toString().padLeft(
2, '0')} ${_dateTime.hour.toString().padLeft(2, '0')}:${_dateTime
.minute.toString().padLeft(2, '0')}", context,
duration: Toast.LENGTH_LONG, gravity: Toast.CENTER);
Navigator.pop(context);
}
ОБНОВЛЕНИЕ
Этот вопрос не помог мне, поскольку он получал эту ошибку, когда звонил .date()
в запрос, но я ничего не вызываю, так как я получаю эту ошибку внутри Django администратора, который уже встроен.