Ich bekomme ein Problem mit Django Chartit
aus meiner Datei views.py, weil er meine Tabelle nicht findet. Diese Tabelle existiert jedoch in meiner MySQL Database
.Tabelle existiert nicht mit Django Chartit roher Abfrage
Ich verwende dieses Modul, um einige Grafiken in meiner Django-Website anzuzeigen, und es ist das erste Mal, dass ich es benutze.
Ich habe eine Tabelle, die Person
in meiner Identity
Anwendung wie diese benannt:
class Person(models.Model):
title = models.CharField(max_length=12,choices=TITLE_CHOICES, verbose_name='Civilité')
young_girl_lastname = models.CharField(max_length=30, verbose_name='Nom de jeune fille', blank=True)
lastname = models.CharField(max_length=30, verbose_name='Nom de famille')
firstname = models.CharField(max_length=30, verbose_name='Prénom(s)')
sex = models.CharField(max_length=8, choices=SEX_CHOICES, verbose_name='Sexe')
birthday = models.DateField(verbose_name='Date de naissance')
birthcity = models.CharField(max_length=30, verbose_name='Ville de naissance')
birthcountry = CountryField(blank_label='Sélectionner un pays', verbose_name='Pays de naissance')
.....
In meiner MySQL-Datenbank, ich habe dies:
mysql> show tables ;
+-------------------------------------+
| Tables_in_DatasystemsEC |
+-------------------------------------+
| BirthCertificate_birthcertificate |
| Configurations_theme |
| Identity_monthlyweatherbycity |
| Identity_person |
| Mairie_mairie |
| Recensement_attestation_recensement |
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
| log_userprofile |
+-------------------------------------+
Sie haben Identity_person
als Tabelle.
Aus meiner Sicht definiert ich eine neue Funktion, um einige Statistiken Grafiken anzuzeigen:
def Chartview(request) :
#Step 1: Create a DataPool with the data we want to retrieve.
ds = \
DataPool(
series=
[{'options': {
'source': Person.objects.raw(
"SELECT birthcountry, COUNT(birthcountry) as nombre FROM Person GROUP BY birthcountry")
},
'terms': [
'birthcountry',
'nombre']}
])
#Step 2: Create the Chart object
cht = Chart(
datasource = ds,
series_options =
[{'options':{
'type': 'column',
'stacking': False},
'terms':{
'birthcountry': [
'nombre']
}}],
chart_options =
{'title': {
'text': 'Nombre de naissances par pays'},
'xAxis': {
'title': {
'text': 'Pays de naissance'}}})
return render(request, 'statistics.html',{'birthcountrychart': cht})
Aber ich diesen Fehler:
(1146, "Table 'DatasystemsEC.Person' doesn't exist")
Ich verstehe nicht, was ich habe ersetzen: Person.objects.raw
. Ich habe versucht Identity_person.objects.raw
, aber es funktioniert nicht.
Danke von vorab
EDIT:
ich einen anderen Weg gefunden, um meine Abfrage mit Django Aggregation dank @ e4c5 und es funktioniert ziemlich gut zu machen:
Person.objects.values('birthcountry').annotate(nombre = Count('birthcountry'))}
Danke! Sie haben mein Problem gelöst, auch wenn ich einen weiteren Fehler bekomme: 'Rohabfrage muss den Primärschlüssel enthalten' – Deadpool