【问题标题】:wrote the editor user name in, after I editing the data in database在我编辑数据库中的数据后,将编辑器用户名写入
【发布时间】:2016-05-06 09:45:02
【问题描述】:

我有一个关于产品的模型

models.py

....

class ProductsTbl(models.Model):
    ....
    description = models.TextField(blank=True, null=True)
    user = models.ForeignKey(User, blank=True, null=True)
    useredit = models.CharField(max_length=32, blank=True, null=True)
    image = models.ImageField(upload_to=get_imagep_Product, blank=True)

    def __unicode__(self):
        return self.name
    def save(self, *args, **kwargs):
        ''' On save, update timestamps '''

        if not self.id:
            self.created = timezone.now()

        return super(ProductsTbl, self).save(*args, **kwargs)

如果我修改了描述或新图像等数据后。我希望数据 useredit 将编辑用户名写入,,,

这里是编辑事物功能

views.py

....
@login_required
def edit_thing(request, slug):
# grab the object...
    thing = ProductsTbl.objects.get(slug=slug)
    if thing.user != request.user:
        raise Http404
# set the form we're using...
    form_class = ProductsTblForm
    if request.method == 'POST':
# grab the data from the submitted form
        form = form_class(data=request.POST,files=request.FILES,instance=thing)
        if form.is_valid():
            # create an instance but do not save yet
            thing = form.save(commit=False)
# set the additional details
            thing.useredit = request.user

# save the object
            thing.save()

            return redirect('thing_detail', slug=thing.slug)
# otherwise just create the form
    else:
        form = form_class(instance=thing)
# and render the template
    return render(request, 'things/edit_thing.html', {
        'thing': thing,
        'form': form,
    })
....

但是,,,当我修改事物信息时,只是显示下面的错误,,,。

Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/things/md0013/edit/

Django Version: 1.8.11
Python Version: 2.7.11
Installed Applications:
('designer',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'registration')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware')


Traceback:
File "/Users/korekyourin/books/helloApp/venv/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/korekyourin/books/helloApp/venv/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  22.                 return view_func(request, *args, **kwargs)
File "/Users/korekyourin/books/stayreal/sandbox/product_id/designer/views.py" in edit_thing
  52.             thing.save()
File "/Users/korekyourin/books/stayreal/sandbox/product_id/designer/models.py" in save
  60.         return super(ProductsTbl, self).save(*args, **kwargs)
File "/Users/korekyourin/books/helloApp/venv/lib/python2.7/site-packages/django/db/models/base.py" in save
  734.                        force_update=force_update, update_fields=update_fields)
File "/Users/korekyourin/books/helloApp/venv/lib/python2.7/site-packages/django/db/models/base.py" in save_base
  762.             updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
File "/Users/korekyourin/books/helloApp/venv/lib/python2.7/site-packages/django/db/models/base.py" in _save_table
  827.                                       forced_update)
File "/Users/korekyourin/books/helloApp/venv/lib/python2.7/site-packages/django/db/models/base.py" in _do_update
  877.         return filtered._update(values) > 0
File "/Users/korekyourin/books/helloApp/venv/lib/python2.7/site-packages/django/db/models/query.py" in _update
  580.         return query.get_compiler(self.db).execute_sql(CURSOR)
File "/Users/korekyourin/books/helloApp/venv/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
  1062.         cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)
File "/Users/korekyourin/books/helloApp/venv/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
  829.             sql, params = self.as_sql()
File "/Users/korekyourin/books/helloApp/venv/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in as_sql
  1028.                                     (field.__class__.__name__, val.__class__.__name__))

Exception Type: TypeError at /things/md0013/edit/
Exception Value: Database is trying to update a relational field of type CharField with a value of type User. Make sure you are setting the correct relations

如何在数据库中写入编辑器名称?谢谢

【问题讨论】:

  • 请在最后一个问题上阅读 cmets - stackoverflow.com/questions/37067756/…
  • ok,,我试试 print("here") 来追踪,sorry,full tr​​aceback 不明白是什么意思?
  • 停止发布图片。单击“切换到复制和粘贴视图”链接,然后粘贴生成的回溯。
  • 好的,我做到了,谢谢

标签: django django-models django-views


【解决方案1】:

在你的views.py中将thing.useredit = request.user这个改成thing.useredit = request.user.username

【讨论】:

    猜你喜欢
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 2021-07-21
    • 2022-11-12
    • 1970-01-01
    • 2013-04-08
    • 2016-03-26
    相关资源
    最近更新 更多