DRF - Problema con serializzazione e custom User Model

22 views
Skip to first unread message

pastrufazio

unread,
Aug 20, 2019, 5:30:07 AM8/20/19
to Django-it

Ciao a tutti,

vi mostro il mio semplice modello composto da una classe utente custom e due tabelle con cui l'utente è in relazione.



MODELS

Volevo che il mio utente avesse come ID uno UUID e quindi, partendo da AbastractUser, ho definito una classe CustomUser nel modo seguente


class CustomUser(AbstractUser):

id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

class Meta:
ordering = ('-date_joined',)

def __str__(self):
return '%s %s' % (self.first_name, self.last_name



Il mio utente lo voglio mettere in relazione con due tabella Acquirente e Venditore
 


class BuyerProfile(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name='buyer_profile'
)
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)
birth_date = models.DateField(auto_now=False, auto_now_add=Fal
address = models.CharField(max_length=256, null=True, blank=True)

class Meta:
verbose_name = 'Buyer'
verbose_name_plural = 'Buyers'
ordering = ('-created_date',)

def __str__(self):
return '{} {}'.format(self.name, self.surname)


class SellerProfile(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name='seller_profile'
)
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)
company_name = models.CharField(max_length=254, null=True, blank=True)
company_address = models.CharField(max_length=254, null=True, blank=True)

class Meta:
verbose_name = 'Seller'
verbose_name_plural = 'Sellers'
ordering = ('-created_date',)

def __str__(self):
return self.company_name




CONFIGURAZIONE

Per quanto riguarda il modello utente, ho indicato la classe da usare per il modello utente in settings.py


AUTH_USER_MODEL = 'accounts.CustomUser'



Ora. io vorrei creare una sorta di API /whoami/ dove, per l'utente loggato, vengano riportato i dati utente ed eventualmente i dati di Buyer o Seller relativi all'utente. Non è detto che l'utente sia in relazione con entrambe le tabella (dipende da come si è voluto registrare al sito).


Una cosa del tipo

{
   
"id": ...,
   
"first_name": ...,
   
"last_name": ...,
   
"seller": {
           
"id": ...,
           
"company_name": ...,
           
"company_address": ...,
   
}
           
   
"buyer": {
           
"id": ...,
           
"birth_date": ...,
           
"address": ...,
   
}
}

È l'approccio corretto o mi incasino la vita per niente?

Come devo impostare views e serializer per queste tre classi? Non ho granché esperienza con Django e DRF, vi chiedo quindi un po' di pazienza
Reply all
Reply to author
Forward
0 new messages