ValueError:在 draco.apps.home.models 中找不到函数 url

Posted

技术标签:

【中文标题】ValueError:在 draco.apps.home.models 中找不到函数 url【英文标题】:ValueError: Could not find function url in draco.apps.home.models 【发布时间】:2014-12-03 11:52:03 【问题描述】:

我只是扩展了我的用户模型,添加了用户、照片、电话、电子邮件等字段。当我使用“./manage.py makemigrations”命令在控制台中进行迁移时,我的问题出现了。完整的信息是:

ValueError: Could not find function url in dracoin.apps.home.models.
Please note that due to Python 2 limitations, you cannot serialize unbound method functions (e.g. a method declared
and used in the same class body). Please move the function into the main module body to use migrations.

这是我的“models.py”(我相信这个.py是错误的根源):

from django.db import models
from django.contrib.auth.models import User


class userProfile(models.Model):

    def url(self,filename):
        ruta = "MultimediaData/Users/%s/%s"%(self.user.username,filename)
        return ruta

    user = models.OneToOneField(User)
    photo = models.ImageField(upload_to=url)
    phone = models.CharField(max_length=30)
    email = models.EmailField(max_length=75)

    def __unicode__(self):
        return self.user.username

我是 django 和 python 的新手,如果我忽略了什么,请提前道歉。

谢谢!!

【问题讨论】:

既然是类方法,应该是upload_to=self.url @karthikr 不正确。 self 未在该范围内定义。 哎呀。不知道我在想什么 【参考方案1】:

错误消息实际上确实告诉了您问题所在 - photo 字段定义中的 url 是一个绑定方法,无法序列化 - 它甚至为您提供了解决方案,即就是把方法从类中移出到主函数中。这意味着:

def url(obj, filename):
    ruta = "MultimediaData/Users/%s/%s"%(obj.user.username,filename)
    return ruta

class userProfile(models.Model):

    user = models.OneToOneField(User)
    photo = models.ImageField(upload_to=url)

【讨论】:

以上是关于ValueError:在 draco.apps.home.models 中找不到函数 url的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:即使在 collectstatic 之后也缺少静态文件清单条目

尝试在 TensorFlow 中微调 GPT-2 模型时出现 ValueError

在程序的多个部分捕获 ValueError

PythonException:从 UDF 引发异常:'ValueError:如何在 Databricks 中修复此错误?

ValueError:维度 (-1) 必须在 [0, 2) 范围内

ValueError: `sequences` 在 Keras 中必须是可迭代的