#python #django
Вопрос:
Я создаю инструмент отчетности для некоторого тестирования SW…
У меня есть следующая модель в моем models.py файл
class triage_notes(models.Model):
stack_name = models.CharField(
max_length=30
)
build_number = models.IntegerField( )
fails = models.IntegerField()
jira_ticket = models.CharField(
max_length=100
)
notes = models.TextField()
bug_type = models.CharField(
max_length=50
)
def as_dict(self, *args, **kwargs):
return {
"id":self.id,
"build_number": self.build_number,
"fails": self.fails,
"jira_ticket": self.jira_ticket,
"notes": self.notes,
"bug_type": self.bug_type
}
Как вы можете себе представить, цель состоит в том, чтобы иметь возможность использовать этот метод в вызове запроса, чтобы представить мой запрос в виде словаря…
На мой взгляд, я пытаюсь использовать этот метод
def index_view(request):
context = triage_notes.objects.as_dict()
print(context)
return render(request, 'index.html', context)
Но я получаю следующую ошибку
TypeError: as_dict() missing 1 required positional argument: 'self'
Я хотел бы лучше понять этот процесс, так как возможность реализации пользовательских методов для моих моделей будет отличным инструментом в будущем.
Любые рекомендации будут вам очень признательны! 🙂
Комментарии:
1. Взгляните на фреймворк Django REST , если ваша цель-сериализация / создание API REST и т. Д.
2. Я ценю ваш ресурс! Я посмотрю. На данный момент я все еще хотел бы узнать, как реализовать этот пользовательский метод, поскольку я считаю, что он будет очень полезен для меня в будущем
3. При рендеринге html вам не нужно преобразовывать данные в диктант
4. Честно говоря, сериализация @AustinHallett-это сложная задача, вам нужно обрабатывать различные типы
int
float
Decimal
данных, логические значения, даты , время… и вы можете получать их в нескольких форматах, поэтому проще использовать то, что обрабатывает их для вас. Если вас беспокоит дополнительное стороннее приложение, вы также можете использовать встроенный сериализатор с Django, как описано в документации: Сериализация объектов Django5. Ну, конечно, решение, предложенное @AbdulAzizBarkat, это отличная точка для начала. В любом случае, неясно, чего вы хотите достичь здесь. конкретный объект? список предметов? последний объект?
Ответ №1:
У Django уже есть метод значений для queryset, который может упростить работу
def index_view(request):
context = list(triage_notes.objects.values("id", "build_number", "fails", "jira_ticket", "notes", "bug_type"))
print(context)
return render(request, 'index.html', context)