创建新用户注册,其中一个模型扩展到另一个模型配置文件

时间:2017-03-07 20:25:50

标签: django django-models django-forms django-views django-admin

问题是我将User模型扩展为Profile模型,Profile模型有一个ManyToMany字段,我想创建一个用户注册表,但我不知道该怎么做,我给出了ManyToMany关系错误

这些是我的模特。

class Categoria(models.Model):#Son las categorias a la que pertenecen los negocios(aplican pa todos)

name   = models.CharField(max_length=50)
slug   = models.SlugField(editable=False)
imagen = fields.ImageField(upload_to = 'categorias',null=True,blank=True,dependencies=[
    FileDependency(processor=ImageProcessor(
        format='JPEG', scale={'max_width': 200, 'max_height': 150}))
])

def save(self, *args, **kwargs):
    if not self.id:
        self.slug = slugify(self.name)
    super(Categoria, self).save(*args, **kwargs)

def __unicode__(self):
    return self.name

class Perfil(models.Model):#Este es el perfil del usuario(solo existe uno por cada usuario)
user           = models.OneToOneField(User, related_name='profile') 
nombre_negocio = models.CharField(max_length=50, unique=True)
encargado      = models.CharField(max_length=50,null=True,blank=True)
imagen         = models.ImageField(upload_to = 'perfiles',null=True,blank=True)
direccion      = models.CharField(max_length=100)
telefono       = models.DecimalField(max_digits=15, decimal_places=0,null=True,blank=True)
email          = models.EmailField()
category       = models.ManyToManyField(Categoria)
inicio         = models.DateTimeField(null=True,blank=True)
final          = models.DateTimeField(null=True,blank=True)
lat            = models.CharField(max_length=50,null=True,blank=True)
lng            = models.CharField(max_length=50,null=True,blank=True)


def save(self, *args, **kwargs):
    if not self.id:
        self.slug = slugify(self.nombre_negocio)
    super(Perfil, self).save(*args, **kwargs)

def __unicode__(self):
    return self.nombre_negocio

这是我正在制作的表格。

class UserForm(UserCreationForm):

negocio   = forms.CharField(max_length=30)
encargado = forms.CharField(max_length=30)
imagen    = forms.ImageField()
direccion = forms.CharField(max_length=30)
telefono  = forms.DecimalField(max_digits=15, decimal_places=0)
email     = forms.EmailField()
#categoria = forms.ManyToManyField(categoria)
lat       = forms.CharField(max_length=30)
lng       = forms.CharField(max_length=30)

我不知道我做错了什么,因为“分类”字段给了我错误。

1 个答案:

答案 0 :(得分:2)

没有forms.ManyToManyField这样的东西,也许尝试使用forms.ModelMultipleChoiceField

所以而不是

categoria = forms.ManyToManyField(categoria)

categoria = forms.ModelMultipleChoiceField(queryset=Categoria.objects.all())