简体   繁体   English

如何在Django中通过电子邮件过滤获取用户对象

[英]How to get user object by email filtering in Django

I am trying to get a specific user in Django via email filtering using default user model.我正在尝试使用默认用户模型通过电子邮件过滤在 Django 中获取特定用户。 I am doing the following in my views.py but it is not working:我正在我的 views.py 中执行以下操作,但它不起作用:

def shareCode(request):
    if request.method=="POST":
        email  = request.POST.get("mail")
        print(email)

        id =  int(request.POST.get('id'))
        user  = User.objects.get(email = email)
        obj = Code.objects.get(pk=id,user = user.id)
        res = {"shared":"fasle"}
        obj2 = Code(name=obj.name,code=obj.code,shared=True)
        obj2.save()
        res = {
            "shared":True
        }
        return HttpResponse(json.dumps(res))

models.py模型.py

    class Code(models.Model):
        name = models.CharField(max_length=255)
        code = models.TextField()
        user = models.ForeignKey(User,on_delete=models.CASCADE)
        shared = models.BooleanField(default=False)

but its getting be following error但它越来越跟随错误

Internal Server Error: /editor/share
Traceback (most recent call last):
  File "D:\stocksapp\winenv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "D:\stocksapp\winenv\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "D:\stocksapp\winenv\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "D:\stocksapp\main\views.py", line 138, in shareCode
    obj = Code.objects.get(id=id,user = user)
  File "D:\stocksapp\winenv\lib\site-packages\django\db\models\manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "D:\stocksapp\winenv\lib\site-packages\django\db\models\query.py", line 390, in get
    clone = self.filter(*args, **kwargs)
  File "D:\stocksapp\winenv\lib\site-packages\django\db\models\query.py", line 844, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File "D:\stocksapp\winenv\lib\site-packages\django\db\models\query.py", line 862, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File "D:\stocksapp\winenv\lib\site-packages\django\db\models\sql\query.py", line 1263, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "D:\stocksapp\winenv\lib\site-packages\django\db\models\sql\query.py", line 1287, in _add_q
    split_subq=split_subq,
  File "D:\stocksapp\winenv\lib\site-packages\django\db\models\sql\query.py", line 1225, in build_filter
    condition = self.build_lookup(lookups, col, value)
  File "D:\stocksapp\winenv\lib\site-packages\django\db\models\sql\query.py", line 1096, in build_lookup
    lookup = lookup_class(lhs, rhs)
  File "D:\stocksapp\winenv\lib\site-packages\django\db\models\lookups.py", line 20, in __init__
    self.rhs = self.get_prep_lookup()
  File "D:\stocksapp\winenv\lib\site-packages\django\db\models\lookups.py", line 70, in get_prep_lookup
    return self.lhs.output_field.get_prep_value(self.rhs)
  File "D:\stocksapp\winenv\lib\site-packages\django\db\models\fields\__init__.py", line 965, in get_prep_value
    return int(value)
ValueError: invalid literal for int() with base 10: 'code'

Any help will be appreciated任何帮助将不胜感激

You can retrieve an object from models using exact match.您可以使用exact匹配从模型中检索对象。

eg:例如:

user = User.objects.get(email__exact='usermail@example.com')

This would generate SQL that looks like this:这将生成如下所示的 SQL:

SELECT... WHERE email = 'usermail@example.com';

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM