我想在我的课程中添加创建的用户和修改的用户并且它给我带来了错误,我尝试了很多方法,这是我尝试的最后一次。
我使用的是正确的方法吗?
from django.db import models
from django.conf import settings
def userDefault():
return settings.AUTH_USER_MODEL
class Ambito(models.Model):
nombre = models.CharField(max_length=150, verbose_name="Ambito")
usuarioCreacionAmbito = models.ForeignKey(settings.AUTH_USER_MODEL,related_name="usuarioCreacionAmbito", default=userDefault)
usuarioModificacionAmbito = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="usuarioModificacionAmbito", default=userDefault)
fechaCreacion = models.DateTimeField(auto_now_add=True)
fechaModificacion = models.DateTimeField(auto_now=True)
def __str__(self):
return u"%s" % self.nombre
class Componentes(models.Model):
nombre = models.CharField(max_length=150)
ambito = models.ForeignKey(Ambito)
obligatorio = models.BooleanField(default=False)
usuarioCreacionComponentes = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="usuarioCreacionComponentes", default=userDefault)
#usuarioModificacionComponentes = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="usuarioModificacionComponentes", default=userDefault)
fechaCreacion = models.DateTimeField(auto_now_add=True)
fechaModificacion = models.DateTimeField(auto_now=True)
def __str__(self):
return u"%s" % self.nombre
class Caracteristicas(models.Model):
nombre = models.CharField(max_length=200)
componentes = models.ForeignKey(Componentes)
usuarioCreacionCaracteristicas = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="usuarioCreacionCaracteristicas", default=userDefault)
usuarioModificacionCaracteristicas = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="usuarioModificacionCaracteristicas", default=userDefault)
fechaCreacion = models.DateTimeField(auto_now_add=True)
fechaModificacion = models.DateTimeField(auto_now=True)
def __str__(self):
return u"%s" % self.nombre
class Verificadores(models.Model):
nombre = models.CharField(max_length=200)
caracteristicas = models.ForeignKey(Caracteristicas)
usuarioCreacionVerificadores = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="usuarioCreacionVerificadores", default=userDefault)
usuarioModificacionVerificadores = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="usuarioModificacionVerificadores", default=userDefault)
fechaCreacion = models.DateTimeField(auto_now_add=True)
fechaModificacion = models.DateTimeField(auto_now=True)
def __str__(self):
return u"%s" % self.nombre
这是错误
ValueError: invalid literal for int() with base 10: 'auth.User'
也许我解释错了,我的目标是在用户添加内容时设置用户值,我的意思是,当用户在数据库上添加行时,会自动保存添加行的用户:
如果我添加一行:
name='Juan', last='perez'
然后我的模型保存
name='Juan', last='perez', user=userId
答案 0 :(得分:0)
问题是您正在分配settings.AUTH_USER_MODEL(默认为' auth.User')作为外键默认值。 默认值应该是整数(相关用户模型的pk),或者可能是用户实例,但是' auth.User'是你给它的。
答案 1 :(得分:0)
您的问题出在userDefault
函数的返回值中。正如suselrd所指出的那样,它是“auth.User”,它不是适合在外键中使用的值。
然而问题比你返回的值更深:Django中的不可能编写一个能够满足你想要的功能。该函数无法访问当前用户:它只能从request
对象获取该函数,并且绝对无法从默认的可调用对象传递该函数。除了其他任何东西,模型可以在请求之外实例化 - 例如在shell中,或在管理命令中 - 以及“当前用户”会在那里?
设置当前用户的唯一方法是在视图中执行此操作。