Forum >> Programmazione Python >> Web e Reti >> [RISOLTO]: Django Problema Models

Pagina: 1

Ciao a tutti,
ho creato un models:


from django.db import models

from django.core.validators import URLValidator

from django.contrib.auth.models import User

import datetime


class MarcheAuto(models.Model):

    marca = models.CharField(max_length=150, unique=True, blank=True, null=True)

    logo = models.TextField(blank=True, null=True)


    class Meta:

        verbose_name = "Marche auto"

        verbose_name_plural = "Marche Auto"


    def __str__(self):

        return self.marca


tipologia = {1:"Auto", 2:"Moto", 3:"Altro"}   

class ParcoAuto(models.Model):

    marca = models.CharField(max_length=150, blank=True, null=True)

    modello = models.CharField(max_length=150, blank=True, null=True)

    tipo = models.IntegerField(blank=True, null=True)


    class Meta:

        verbose_name = "Modelli Auto"

        verbose_name_plural = "Modelli Auto"


    def __str__(self):

        return f'{self.marca} - {self.modello} ({tipologia[self.tipo]})'


ANNO_CHOICES = []

for r in range(1930, (datetime.datetime.now().year+1)):

    ANNO_CHOICES.append((r,r))

class ParcoAutoUtente(models.Model):

    utente = models.ForeignKey(User, on_delete = models.CASCADE)

    auto = models.ForeignKey(ParcoAuto, on_delete = models.CASCADE)

    anno = models.IntegerField(choices=ANNO_CHOICES, default=datetime.datetime.now().year)

    cilindrata = models.IntegerField(blank=True, null=True)

    alimentazione = models.CharField(max_length=40, blank=True, null=True)

    kw = models.IntegerField(blank=True, null=True)

    classe_euro = models.CharField(max_length=5, blank=True, null=True)

    emissioni_co2 = models.CharField(max_length=20, blank=True, null=True)

    consumo_km = models.CharField(max_length=20, blank=True, null=True)

    colore = models.CharField(max_length=50, blank=True, null=True)

    porte = models.IntegerField(blank=True, null=True)

    posti = models.IntegerField(blank=True, null=True)

    massa = models.CharField(max_length=5, blank=True, null=True)

    larghezza = models.IntegerField(blank=True, null=True)

    lunghezza = models.IntegerField(blank=True, null=True)

    altezza = models.IntegerField(blank=True, null=True)

    ultima_revisione = models.DateField(blank=True, null=True)

    descrizione = models.TextField(blank=True, null=True)

    prezzo = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True)


    class Meta:

        verbose_name = "Parco auto utente"

        verbose_name_plural = "Parco Auto utente"


    def __str__(self):

        return self.auto


class ImmaginiAuto(models.Model):

    auto = models.ForeignKey(ParcoAutoUtente, on_delete = models.CASCADE)

    immagine = models.CharField(max_length=255, blank=True, null=True)

    video = models.CharField(max_length=255, validators=[URLValidator()])


    class Meta:

        verbose_name = "Immagini Auto"

        verbose_name_plural = "Immagini Auto"


    def __str__(self):

        return self.immagine

Effettuato il makemigration e migration... tutto ok.




Ho anche creato l'admin.py (credo che il codice dell'admin non sia importante, se dovesse servire lo inserirò).

Funziona tutto regolarmente, eccetto che per l'inserimento di un "ParcoAutoUtente".

Ritorna questo errore:

TypeError: __str__ returned non-string (type ParcoAuto)




Cosa significa? :dont-know:

In genere dovrebbe ritornare un errore di tipo str, ma type ParcoAuto?




Qualcuno saprebbe aiutarmi.

Vi ringrazio e vi saluto.


--- Ultima modifica di LeoX in data 2019-06-03 11:42:08 ---
Ho risolto,
in ParcoAutoUtente il return è un oggetto

> return self.auto

mentre andrebbe un str:

> return str(self.auto)




Grazie ugualmente.


--- Ultima modifica di LeoX in data 2019-06-03 11:29:20 ---


Pagina: 1



Esegui il login per scrivere una risposta.