ユーザーモデルに外部キーを持つプロファイルモデルがあります。私は、ユーザーがプロフィール情報を更新できるようにする 'プロフィール編集'ビューを作成しました。それらのフィールドの1つはイメージフィールド(曇りでホストされている)です。このフィールドをCloudinalフィールドに変更すると、プロファイルにアップロードされた画像がない場合、新しく作成されたプロファイルオブジェクトに問題があるようです。しかし、ユーザーがプロフィール画像を持っていれば、私は 'edit_profile'ビューを読み込むことができます。タイプ 'NoneType'のオブジェクトにはlen()がありません - フォームの編集
フィールドを削除しても問題なく動作するように、イメージフィールドに絞り込みました。トレースバックはあまり役に立ちませんが
ここは私のedit_profileビューです。
私は、ユーザーが姓、名字、電子メールを更新できるユーザーモデルの2つのフォームを持っています。その後、追加のフィールドを更新できるプロファイルフォーム。
私は画像フィールドがヌルに設定されているかどうかを確認するロジックを追加する必要があると思います!私はnull = Trueをフィールド上のセットに設定していないので、少し混乱しています。
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = CloudinaryField('image', default="thumbnail_mqe6ne")
height = models.DecimalField(help_text="CM", max_digits=8, decimal_places=2, validators=[
MinValueValidator(20),
MaxValueValidator(600),
])
gender_option = (
('Male', 'Male'),
('Female', 'Female'),
)
profile_status = (
('Public', 'Public'),
('Private', 'Private'),
)
birth_date = models.DateField(blank=True, default=datetime.date.today, verbose_name="Date of Birth")
gender = models.CharField(choices=gender_option, blank=True, max_length=10)
bio = models.TextField(max_length=300, blank=True)
location = models.CharField(max_length=30, blank=True)
status = models.CharField(default="Public", max_length=10, choices=profile_status)
def __unicode__(self):
return unicode(self.user.username)
def get_absolute_url(self):
return reverse("profile:profile_home", kwargs={"id": self.id})
//トレースバック私は壁に頭を叩いていてすべてのヘルプははるかに高く評価されるだろう
Environment:
Request Method: GET
Request URL: http://localhost:8000/profile/edit/
Django Version: 1.10.4
Python Version: 2.7.6
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'stats',
'home',
'sorl.thumbnail',
'storages',
'cloudinary',
'debug_toolbar',
'django_cleanup',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.facebook']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware']
Template error:
In template /vagrant/bodymakeover/templates/profile/edit.html, error at line 27
object of type 'NoneType' has no len() 17 : {% comment %}{{ profile.first_name }}<br>
18 : {{ profile.last_name }}<br>
19 : {{ profile.bio }}<br>
20 : {{ profile.location }}<br>
21 : {{ profile.birthdate }}<br>{% endcomment %}
22 :
23 :
24 : <form method="post" enctype='multipart/form-data'>
25 : {% csrf_token %}
26 : {{ user_form.as_p }}
27 : {{ profile_form.as_p }}
28 : <button class="btn btn-primary" type="submit">Save changes</button>
29 : </form>
30 :
31 :
32 : </div>
33 :
34 :
35 : {% endblock %}
Traceback:
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
39. response = get_response(request)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
23. return view_func(request, *args, **kwargs)
File "/vagrant/bodymakeover/home/views.py" in edit_profile
54. 'profile_form': profile_form
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/shortcuts.py" in render
30. content = loader.render_to_string(template_name, context, request, using=using)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/loader.py" in render_to_string
68. return template.render(context, request)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/backends/django.py" in render
66. return self.template.render(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/base.py" in render
208. return self._render(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render
94. return self.nodelist.render(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/base.py" in render
994. bit = node.render_annotated(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/base.py" in render_annotated
961. return self.render(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render
174. return compiled_parent._render(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render
94. return self.nodelist.render(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/base.py" in render
994. bit = node.render_annotated(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/base.py" in render_annotated
961. return self.render(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render
70. result = block.nodelist.render(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/base.py" in render
994. bit = node.render_annotated(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/base.py" in render_annotated
961. return self.render(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render
70. result = block.nodelist.render(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/base.py" in render
994. bit = node.render_annotated(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/base.py" in render_annotated
961. return self.render(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/base.py" in render
1044. output = self.filter_expression.resolve(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/base.py" in resolve
711. obj = self.var.resolve(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/base.py" in resolve
852. value = self._resolve_lookup(context)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/template/base.py" in _resolve_lookup
915. current = current()
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/forms/forms.py" in as_p
289. errors_on_separate_row=True)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/forms/forms.py" in _html_output
226. 'field': six.text_type(bf),
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/utils/html.py" in <lambda>
382. klass.__unicode__ = lambda self: mark_safe(klass_unicode(self))
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/forms/boundfield.py" in __str__
43. return self.as_widget()
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/forms/boundfield.py" in as_widget
89. attrs = self.build_widget_attrs(attrs, widget)
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/forms/boundfield.py" in build_widget_attrs
238. if widget.use_required_attribute(self.initial) and self.field.required and self.form.use_required_attribute:
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/django/forms/widgets.py" in use_required_attribute
441. return super(ClearableFileInput, self).use_required_attribute(initial) and not initial
File "/vagrant/bodymakeover/venv/local/lib/python2.7/site-packages/cloudinary/__init__.py" in __len__
129. return len(self.public_id)
Exception Type: TypeError at /profile/edit/
Exception Value: object of type 'NoneType' has no len()
:
は、ここに私のプロフィールモデルです。うまくいけば明白な何か:
詳細なトレースバックを提供できますか? – Rohanil
Hey Rohanil、私はトレースバックの最後の部分を追加しました。それで十分ですか?返信いただきありがとうございます。 – JDavies
いいえ、それでは不十分です。なぜあなたは全体を貼り付けることができないのですか? –