Получение значения даты из django queryset - PullRequest
1 голос
/ 19 апреля 2020

У меня есть следующие модели

class Member(models.Model):
    memberid = models.AutoField(primary_key=True, editable=False)
    memberdate = models.DateTimeField(default=timezone.now)
    fname = models.CharField(max_length=25)
    mname = models.CharField(max_length=25)
    lname = models.CharField(max_length=25)
    mobile1 = models.CharField(max_length=15)
    email = models.CharField(max_length=150)
    dob = models.DateTimeField(default=timezone.now)

Я загружаю данные для отображения в шаблоне html. Для представления ниже код

def updateMemberView(request, id):
    searchmem= id
    member = Member.objects.filter(memberid=searchmem).values()
    print(member[0])
    return render(request, 'Member/member_update_form.html', {"member": member})

Сейчас в печати (член [0]) я получаю

{'memberid': 13, 'memberdate': datetime.datetime(2020, 4, 11, 0, 0, tzinfo=<UTC>), 'fname': 'Akash', 'mname': 'chimanbhai', 'lname': 'khatri', 'mobile1': '', 'email': 'kashkhatri@yahoo.com', 'dob': datetime.datetime(2020, 4,    3, 0, 0, tzinfo=<UTC>)}

Но когда я пытаюсь напечатать значение dob в шаблоне, используя member.0.dob это дает мне ошибку. Также, когда я пытаюсь выполнить команду

print(member[0].dob)

, это также выдает ошибку 'dict' объект не имеет атрибута 'dob'

Так как я могу получить значение dob в поле зрения, а также в шаблон.

1 Ответ

1 голос
/ 19 апреля 2020

Это словарь . Вы получаете доступ к значению, соответствующему ключу в словаре, путем подписки :

print(member[0]<b>['dob']</b>)

При этом используйте .values(..) [Django -doc] следует использовать редко, тем более что вы стираете логический слой модели. Например, внешние ключи больше не извлекаются лениво, у вас есть только значение первичного ключа.

Вы можете просто передать объект модели в шаблон:

from django.shortcuts import get_object_or_404

def update_member_view(request, id):
    member = get_object_or_404(Member, memberid=id)
    return render(request, 'Member/member_update_form.html', {'member': member})

Некоторые распространенные ошибки:

  1. функции обычно пишутся в slug_case, а не в PerlCase или camelCase;
  2. , лучше использовать get_object_or_404 для возврата исключения HTTP 404, если объект не может быть найден; и
  3. , как было сказано выше, передать сам объект Member, чтобы вы могли добавить дополнительные методы в модель, которую можно использовать в шаблоне.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...