Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t从Django中的CharField获取值_Django_Python 3.x - Fatal编程技术网

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
是否有价值?或者那是空的还是空的?哦,这就是我需要的。显然,我没有仔细阅读文档。谢谢你的回答!