Obecnie mam pasek wyszukiwania. Przeszukuje klientów, którzy wypełnili formularz, używając imion i nazwisk, wyszukuje listę z nazwiskami będącymi linkami do strony klienta.
Zmagam się z wyświetleniem danych tej konkretnej osoby, model ma około 20 pól, musiałby wyświetlić wszystkie. Jak mogę pobrać dane jednej osoby i wyświetlić wszystkie dane z modelu?
Obecnie strona jest pusta, ale adres URL wyświetla poprawny identyfikator klienta.
Z góry dziękuję.
Edytować:
Views.py
# for search
def clientSearch(request):
query = request.GET.get('q')
if query:
queryset = (Q(FIRST_NAME__icontains=query))|(Q(LAST_NAME__icontains=query))
results = Register_Client.objects.filter(queryset).distinct()
else:
results = []
content = {
'results' : results,
'query' : query
}
return render(request, 'HTML/clientSearch.html', content)
# For displaying details
def client(request, id):
obj = get_object_or_404(Register_Client, id=id)
field = obj._meta.fields
content = {
"field":field
}
return render(request, 'HTML/Client.html', content)
Model:
class Register_Client(models.Model):
TITLES = (
('MR', 'Mr'),
('MISS', 'Miss'),
('MRS', 'Mrs'),
('OTHER', 'Other')
)
TITLE = models.CharField(max_length=5,
choices=TITLES,
blank=True,
default=None)
FIRST_NAME = models.CharField(max_length=50)
LAST_NAME = models.CharField(max_length=50)
DATE_OF_BIRTH = models.DateField()
ADDRESS_LINE_ONE = models.CharField(max_length=255)
ADDRESS_LINE_TWO = models.CharField(max_length=255,
blank=True)
CITY = models.CharField(max_length=50,
blank=True)
POSTCODE = models.CharField(max_length=8)
EMAIL = models.EmailField(blank=True)
phone_regex = RegexValidator(regex=r'^\+?1?\d{11}$', message ="You must enter an 11 digit number")
TEL_NUM = models.CharField(validators=[phone_regex], max_length=11, blank=True)
MOBILE = models.CharField(validators=[phone_regex], max_length=11, blank=True)
GP_NAME = models.CharField(max_length=255,
blank=True)
NHS_NO = models.CharField(max_length=20,
blank=True)
GP = models.CharField(max_length=50,
blank=True)
GENDERS = (
('MALE', 'Male'),
('FEMALE', 'Female'),
('OTHER', 'Other')
)
GENDER = models.CharField(max_length=6,
choices=GENDERS,
blank=True,
default=None)
SCHOOL = models.CharField(max_length=50,
blank=True)
ETHNICITY = (
('WHITEB','White – British'),
('WHITEI','White – Irish'),
('WHITEO','White - Other'),
('MIXWBC','Mixed – White & Black Caribbean'),
('MIXWBA','Mixed – White & Black African'),
('MIXO','Mixed – Other'),
('AABI','Asian / Asian British - Indian'),
('AABP','Asian / Asian British – Pakistani'),
('AABB','Asian / Asian British - Bangladeshi'),
('AABO','Asian / Asian British – Other'),
('BBBA','Black/Black British – African'),
('BBBO','Black/Black British – Other'),
('C','Chinese'),
('O','Any Other Ethnic Group'),
('NOT','Not Stated'),
)
ETHNIC = models.CharField(max_length=40,
choices=ETHNICITY,
blank=True,
default=None)`
2 odpowiedzi
Skoncentruję się na widoku client
Zmień to na następujące:
# For displaying details
def client(request, id):
obj = get_object_or_404(Register_Client, id=id)
context = {
"obj": obj
}
return render(request, 'HTML/Client.html', context)
W Twoim szablonie HTML/Client.html
:
<!DOCTYPE html>
<html>
<head></head>
<body>
<p>TITLES: {{ obj.TITLES }}</p>
<p>TITLE: {{ obj.TITLE }}</p>
<p>FIRST_NAME: {{ obj.FIRST_NAME }}</p>
<p>LAST_NAME: {{ obj.LAST_NAME }}</p>
<p>DATE_OF_BIRTH: {{ obj.DATE_OF_BIRTH }}</p>
<p>ADDRESS_LINE_ONE: {{ obj.ADDRESS_LINE_ONE }}</p>
<p>ADDRESS_LINE_TWO: {{ obj.ADDRESS_LINE_TWO }}</p>
<p>CITY: {{ obj.CITY }}</p>
<p>POSTCODE: {{ obj.POSTCODE }}</p>
<p>EMAIL: {{ obj.EMAIL }}</p>
<p>phone_regex: {{ obj.phone_regex }}</p>
<p>TEL_NUM: {{ obj.TEL_NUM }}</p>
<p>MOBILE: {{ obj.MOBILE }}</p>
<p>GP_NAME: {{ obj.GP_NAME }}</p>
<p>NHS_NO: {{ obj.NHS_NO }}</p>
<p>GP: {{ obj.GP }}</p>
<p>GENDERS: {{ obj.GENDERS }}</p>
<p>GENDER: {{ obj.GENDER }}</p>
<p>SCHOOL: {{ obj.SCHOOL }}</p>
<p>ETHNICITY: {{ obj.ETHNICITY }}</p>
<p>ETHNIC: {{ obj.ETHNIC }}</p>
</body>
</html>
Możesz to zrobić, filtrując dane w Pythonie w swoim views.py. Posługiwać się
ModelName.objects.filter(person_firstname="request").all()
I zwróć odpowiedź jako
return HttpResponse(ModelName.objects.filter(person_firstname="request").all())
Jeśli chcesz, aby zwrócone dane były w formacie JSON, użyj
return HttpResponse(json.dumps(list(ModelName.objects.filter(person_firstname="request").all())
Podobne pytania
Nowe pytania
django
Django to framework aplikacji internetowych typu open source po stronie serwera, napisany w języku Python. Został zaprojektowany w celu zmniejszenia wysiłku potrzebnego do tworzenia złożonych witryn i aplikacji internetowych opartych na danych, ze szczególnym naciskiem na mniej kodu, brak nadmiarowości i bardziej jawny niż niejawny.