Tengo una tabla con todos los países y quisiera crear una relación de 1 a muchos entre países y usuarios. Es posible hacer esto??
Gracias de ante mano.
Extender el modelo de usuario de DJango
Extender el modelo de usuario de DJango
Axioma de Espinosa
Si funciona, no lo toque.
Si funciona, no lo toque.
Re: Extender el modelo de usuario de DJango
Como nadie respondió me da por pensar q es q no saben y como encontré la solución la voy a compartir con todos.
El problema es q la tabla user ya esta creada, así q se crea otra tabla (Profile) con relacion 1x1 a userd de esta manera:
Luego se crea un formulario por ejemplo forms.py:
Luego pasa este formulario en urls.py a la vista register - la linea donde se haga esto debe estar antes de la llamada a la app registration :
Ahora necesitamos añadir una suscripción en user_registered signal:
De esta manera no solo logre crear una llave foranea en user sino q se la pongo en el formulario para q se llene cuando se cree el usuario.
Fuente: http://dmitko.ru/?p=546 En esta pagina hay un ejemplo funcional para descargar.
El problema es q la tabla user ya esta creada, así q se crea otra tabla (Profile) con relacion 1x1 a userd de esta manera:
Código: Seleccionar todo
from django.db import models
from django.contrib.auth.models import User
class City(models.Model):
name = models.CharField(max_length=def_max_length)
class Meta:
app_label = "sample_user_registration"
verbose_name = "City"
verbose_name_plural = "Cities"
def __unicode__(self):
return "%s" % self.name
class Profile( models.Model ):
user = models.ForeignKey(User, unique=True)
city = models.ForeignKey(City, null=True, blank=True, db_index=True)
class Meta:
app_label = "sample_user_registration"
verbose_name = "User profile"
verbose_name_plural = "User profiles"
Código: Seleccionar todo
from django import forms
from models import Profile, City
from registration.forms import RegistrationForm
class ProfileForm(forms.Form):
city = forms.ModelChoiceField(queryset=City.objects, label="City", empty_label="Not Defined")
def save(self, user):
try:
data = user.get_profile()
except:
data = Profile(user=user)
data.city = self.cleaned_data["city"]
data.save()
class UserRegistrationForm(RegistrationForm):
city = forms.ModelChoiceField(queryset=City.objects, label="City", empty_label="Not Defined")
Código: Seleccionar todo
from django.contrib import admin
import registration.backends.default.urls as regUrls
from profile import UserRegistrationForm
from registration.views import register
import regbackend, views
urlpatterns = patterns('',
(r'^conf/admin/(.*)', admin.site.root),
url(r'^accounts/register/$', register, {'backend': 'registration.backends.default.DefaultBackend','form_class': UserRegistrationForm}, name='registration_register'),
(r'^accounts/', include(regUrls)),
(r'^$', views.index),
)
Código: Seleccionar todo
import profile
def user_created(sender, user, request, **kwargs):
form = profile.UserRegistrationForm(request.POST)
data = profile.Profile(user=user)
data.city_id = form.data["city"]
data.save()
from registration.signals import user_registered
user_registered.connect(user_created)
Fuente: http://dmitko.ru/?p=546 En esta pagina hay un ejemplo funcional para descargar.
Axioma de Espinosa
Si funciona, no lo toque.
Si funciona, no lo toque.