Models does not create tables when synched
I have some django models for my extended users profile. Problem is that this code does not create tables when syncdb is used (simply nothing happens. No validation errors). Why is that happening? (Also those models give import error elsewhere) :
#!/usr/bin/env python
# encoding: utf-8
from django.db import models
from django.contrib.auth.models import User
from registration.signals import user_registered
from forms import ExtendedRegistrationForm
import hashlib
class InheritedProfile(models.Model):
first_name = models.CharField("Name", max_length=50, blank=True, null=True)
last_name = models.CharField("Last name", max_length=50, blank=True, null=True)
pid = models.CharField("PESEL", max_length=11, blank=True, null=True)
street = models.CharField("Street", max_length=50, blank=True, null=True)
number = models.CharField("Flat/house number", max_length=10, blank=True, null=True)
code = models.CharField("Zip ", max_length=6, blank=True, null=True)
city = models.CharField("City", max_length=50, blank=True, null=True)
class Meta:
abstract=True
class UserProfile(InheritedProfile):
def upload_path(self, field_attname):
filename = hashlib.md5(field_attname).hexdigest()[:4] + "_" + field_attname
return "uploads/users/%s" % (filename,)
user = models.ForeignKey(User, unique=True, related_name='profile')
image = models.ImageField(upload_to=upload_path, verbose_name="Image", blank=True, null=True)
class Meta:
ordering = ['-id']
db_table = 'userprofile'
def __unicode__(self):
return u"%s " % self.user.username
def user_created(sender, user, request, **kwargs):
form = ExtendedRegistrationForm(request.POST)
extended_user = UserProfile(user=user)
extended_user.is_active = False
extended_user.first_name = form.cleaned_data['first_name']
extended_user.last_name = form.cleaned_data['last_name']
extended_user.pid = form.cleaned_data['pid']
extended_user.image = form.cleaned_data['image']
extended_user.street = form.cleaned_data['street']
extended_user.num开发者_StackOverflow中文版ber = form.cleaned_data['number']
extended_user.code = form.cleaned_data['code']
extended_user.city = form.cleaned_data['city']
extended_user.save()
user_registered.connect(user_created)
class Friend(InheritedProfile):
friend_of = models.ForeignKey(UserProfile, related_name='friend_of')
class Meta:
db_table = 'friend'
In contrary this code produces tables flawlessly :
#!/usr/bin/env python
# encoding: utf-8
from django.db import models
from django.contrib.auth.models import User
import hashlib
class InheritedProfile(models.Model):
first_name = models.CharField("Name", max_length=50, blank=True, null=True)
last_name = models.CharField("Last name", max_length=50, blank=True, null=True)
pid = models.CharField("PESEL", max_length=11, blank=True, null=True)
street = models.CharField("Street", max_length=50, blank=True, null=True)
number = models.CharField("Flat/house number", max_length=10, blank=True, null=True)
code = models.CharField("Zip ", max_length=6, blank=True, null=True)
city = models.CharField("City", max_length=50, blank=True, null=True)
class Meta:
abstract=True
class UserProfile(InheritedProfile):
def upload_path(self, field_attname):
filename = hashlib.md5(field_attname).hexdigest()[:4] + "_" + field_attname
return "uploads/users/%s" % (filename,)
user = models.ForeignKey(User, unique=True, related_name='profile')
image = models.ImageField(upload_to=upload_path, verbose_name="Image", blank=True, null=True)
class Meta:
ordering = ['-id']
db_table = 'userprofile'
def __unicode__(self):
return u"%s " % self.user.username
class Friend(InheritedProfile):
friend_of = models.ForeignKey(UserProfile, related_name='friend_of')
class Meta:
db_table = 'friend'
Should I move this user_created function somewhere else ? Signals shouldn't create problems here...
Well you seem to have some kind of cross import; if you import some models to forms
and some form from there back to models
this can't be resolve, because when processing models
forms
is required to be imported, and forms
requires models
again... This can't be resolved!
Besides this I think it's better design not needing to import forms in a models module, because they are more related to views!
精彩评论