Bonjour
Et déjà merci, oui merci d'être là ;-)
Bon j'avance énormément sur mon projet, mais il me reste un petit problème, en effet je n'arrive pas a visualiser des information d'un champ de type ManytoMany.
pour faire simple j'arrive a récupérer mon enregistrement et l'ensemble des champs et image sans problème mais le champs ManytoMany impossible.
j'ai donc essaye de récupérer en amont dans la View.py et de le passer dans le contexte, marche pas non plus.
Après je doute que Django ne possède pas un méthode simple ...
par avance merci pour votre aide
Amicalement
Fred
models.py
view.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 import os from django.db import models from unipath import path # Create your models here. class Country(models.Model): Country_Phone = models.IntegerField(blank=True, null=True) Country_Code = models.CharField(max_length=2, blank=True) Country_Name = models.CharField(max_length=80, default=" ") Country_Symbol = models.CharField(max_length=10, blank=True, null=True) Country_Capital = models.CharField(max_length=80, blank=True, null=True) Country_Currency = models.CharField(max_length=3, blank=True, null=True) Country_Continent = models.CharField(max_length=30, blank=True, null=True) Country_ContinentCode = models.CharField(max_length=2, blank=True, null=True) Country_Alpha3 = models.CharField(max_length=3, blank=True, default="") Country_Flag = models.FileField(upload_to="flag", blank=True, null=True) class Meta: verbose_name = "Country" verbose_name_plural = "Countries" def __unicode__(self): return u'%s' % self.Country_Name def __str__(self): return '%s - %s' % (self.Country_Alpha3, self.Country_Name) class Tests(models.Model): Test_Ref = models.IntegerField(blank=True, null=True) Test_Name = models.CharField(max_length=100, blank=True) Test_Countries = models.ManyToManyField(Country, blank=True) def __str__(self): return '%s - %s' % (self.Test_Ref, self.Test_Name)
show.html
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 from django.shortcuts import render, redirect from .models import Tests, Country def index(request): tests = Tests.objects.order_by('-id').all() tests_number = tests.count() countries = Country.objects.all() countries_all = Country.objects.values_list('Country_Name').order_by('Country_Name') countries_all_number = countries_all.count() countries_list = Tests.objects.values_list('Test_Countries').order_by('Test_Countries').distinct() countries_number = countries_list.count() print(f"countries = {countries}") print(f"countries_all = {countries_all}") print(f"countries_all_number = {countries_all_number}") print(f"countries_list = {countries_list}") print(f"countries_number = {countries_number}") message = f'{tests_number} tests :' if tests_number == 1: message = f'{tests_number} test :' context = { 'tests': tests, 'message': message, 'countries': countries, } return render(request, 'Myapp/index.html', context)
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <h1>TEST</h1> <h2>{{message}}</h2> {% for t in tests %} <h3>{{ t.Test_Ref }} - {{ t.Test_Name }} - {{ t.Test_Countries.Country_Name }}</h3> {% endfor %} {% for rel in tests.from_test_countries.all %} <p> rel[{{ forloop.counter }}]={{ rel.Test_Ref }} {{ rel.from_person.name }} ({{ rel.from_person.eyes }}) {{ rel.to_person.name }} ({{ rel.to_person.eyes }})</p> {% endfor %}
Partager