Can';t从Django中的CharField获取值
无法获取Can';t从Django中的CharField获取值,django,python-3.x,Django,Python 3.x,无法获取User类中用户名字段的值 如果通过print输出-一切都正确,但如果作为参数传递,则会给出django.db.models.fields.CharField。 通过str和str\uuuuuu它传递相同的东西 @receiver(post_save, sender=User) def create_user_profile(sender, instance, created, **kwargs): if created: Profile.objects.create(user=
User
类中用户名字段的值
如果通过print输出-一切都正确,但如果作为参数传递,则会给出django.db.models.fields.CharField
。
通过str
和str\uuuuuu
它传递相同的东西
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance, usrname=instance.username)
我使用以下参数-
usrname = models.CharField(max_length=100, default = '')
upload = 'img/users/%s' % usrname
img = models.FileField(upload_to=upload, blank=True)
请告诉我,我做错了什么
来自模型的代码:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
usrname = models.CharField(max_length=100, default = '')
upload = 'img/users/%s' % usrname
img = models.FileField(upload_to=upload, blank=True)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance, usrname=instance.username)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
我使用的是库
django.contrib.auth
中的标准User
模型,而不是自定义的。您的问题不清楚,但您肯定无法执行在upload\u to参数中尝试执行的操作。这是一个类级定义,没有对实例的访问权限,更不用说任何实例上的字段值了
如前所述,动态设置上载的方法是使用可调用函数
def upload_username(instance, filename):
return os.path.join('img/users', instance.username, filename)
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
usrname = models.CharField(max_length=100, default = '')
img = models.FileField(upload_to=upload_username, blank=True)
但是请注意,似乎没有任何好的理由在概要文件模型上单独设置用户名。用户名始终可以通过用户模型使用,那么将其存储在配置文件中又有什么意义呢?首先,我强烈建议使用库django.contrib.auth中的用户模型。它会帮助你的。出于任何原因,您决定此模型不适合您的解决方案,请向我们提供详细的
models.py
文件。@PanosAngelopoulos更新了问题是实例。username
是否有价值?或者那是空的还是空的?哦,这就是我需要的。显然,我没有仔细阅读文档。谢谢你的回答!