Domanda Django: modello Foreign Key to User


Voglio creare un nuovo modello, qualcosa del tipo:

user_name = models.ForeignKey(u"Username", User),

ma quando provo a syncdb, ottengo questo messaggio di errore:

"AttributeError: l'oggetto 'unicode' non ha attributo '_meta'"

Quando guardo alcuni tutorial, tutto sembra essere lo stesso come nel mio modello e il problema con "_meta" non viene mai menzionato.


15
2017-09-05 14:41


origine


risposte:


Un modo più sicuro per farlo è usare il AUTH_USER_MODEL dal file delle impostazioni.

Esempio:

from django.db import models
from django.conf import settings

class Article(models.Model):
    headline = models.CharField(max_length=255)
    article = models.TextField()
    author = models.ForeignKey(settings.AUTH_USER_MODEL)

Di default settings.AUTH_USER_MODEL si riferisce a django.contrib.auth.models.User senza che tu debba fare nulla

Il vantaggio di questo approccio è che la tua app continuerà a funzionare anche se utilizzi un modello utente personalizzato senza modifiche.

Per ulteriori informazioni su come utilizzare i modelli utente personalizzati dai un'occhiata a questa parte dei documenti di Django


30
2017-10-21 10:35



Vuoi solo:

from django.contrib.auth.models import User

class MyModel(models.Model):
    ...
    user = models.ForeignKey(User)
    ...

22
2017-09-05 14:43