0

问题是,我扩展了用户模型到配置文件模型和配置文件模型有一个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) 

我不知道我在做什么错,因为categoría字段给我错误。

回答

2

有没有这样的事情作为forms.ManyToManyField,也许尝试使用forms.ModelMultipleChoiceField

所以不是

categoria = forms.ManyToManyField(categoria) 

尝试

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