У объекта 'datetime.time' нет атрибута 'date' в django admin - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь открыть объект в моем 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 администратора, который уже встроен.

1 Ответ

0 голосов
/ 13 февраля 2020

Удаление текущей базы данных PostgreSQL и создание новой решило ее !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...