小编Mar*_*hyn的帖子

使用Gmail API以html格式检索电子邮件/邮件正文

有没有办法使用GMail api以html格式检索邮件正文?

我已经通过了message.get..试图改变文档formatPARAMS到full,minimalraw.但是id并没有帮助.它返回邮件正文.


格式值说明:

"full":返回有效内容字段中已解析的电子邮件内容,并且不使用原始字段.(默认)

"minimal":仅返回标识符和标签等电子邮件元数据,不返回电子邮件标题,正文或有效内容.

"raw":以字符串形式返回原始字段中的整个电子邮件内容,并且不使用有效内容字段.这包括标识符,标签,元数据,MIME结构和小体部分(通常小于2KB).


我们不能简单地以html格式获取邮件正文,或者是否有其他方法可以做到这一点,以便当他们在我的应用程序或GMail中看到邮件时,屏幕上显示的邮件差别很小?

python gmail-api

18
推荐指数
3
解决办法
2万
查看次数

Django的NotImplementedError:未实现annotate()+ distinct(fields)

有2个简单的模型:

class Question(TimeStampedModel):
    text = models.CharField(max_length=40)

class Answer(TimeStampedModel):
    question = models.ForeignKey(Question, related_name='answers')
    is_agreed = models.BooleanField()
    author = models.ForeingKey(User, related_name='answers')
Run Code Online (Sandbox Code Playgroud)

现在,我将描述我的问题.

In [18]: Question.objects.count()
Out[18]: 3
Run Code Online (Sandbox Code Playgroud)

我需要使用'is_user_agreed'和'answers_amount'字段来注释queryset:

In [18]: user = User.objects.first() 
In [19]: qs = Question.objects.annotate(
    ...:             is_user_agreed=Case(
    ...:                 When(answers__in=user.answers.filter(is_agreed=True), then=Value(True)),
    ...:                 When(answers__in=user.answers.filter(is_agreed=False), then=Value(False)),
    ...:                 default=Value(None),
    ...:                 output_field=NullBooleanField(),
    ...:             ),
    ...:         ).annotate(answers_amount=Count('answers'))
    ...: qs.count()
Out[19]: 4 
Run Code Online (Sandbox Code Playgroud)

^这里的数量是4,但我在db中只有3个问题 :(所以,我试过了distinct()

In [20]: qs.distinct().count()
Out[20]: 4  # but distinct doesn't work

In [21]: qs.distinct('id').count()
Run Code Online (Sandbox Code Playgroud)

在最后一行代码之后我得到了这个例外:

NotImplementedError: annotate() + distinct(fields) is not implemented. …
Run Code Online (Sandbox Code Playgroud)

python django postgresql

12
推荐指数
1
解决办法
4236
查看次数

Django ORM concat 关联行(通过 ORM 进行字符串连接?)

两个简单的模型:

class Thread(models.Model):
    pass

class Message(models.Model):
    thread = models.ForeignKey(Thread, related_name='messages')
Run Code Online (Sandbox Code Playgroud)

可以做这样的事情吗?

>>> thread = Thread.objects.create()

>>> Message.objects.create(thread=thread, content='One')
>>> Message.objects.create(thread=thread, content='Two')
>>> Message.objects.create(thread=thread, content='Three')

>>> t = Thread.objects.annotate(
        message_content=MySuperConcat('messages__content')).first()
>>> t.messages_content

OneTwoThree
Run Code Online (Sandbox Code Playgroud)

似乎 Django 的 Concat 无法做到这一点,现在我不确定是否可以实现所需的行为。

注意:PostgreSQL 9.5 和 Django 1.11。

django django-orm

1
推荐指数
1
解决办法
1243
查看次数

标签 统计

django ×2

python ×2

django-orm ×1

gmail-api ×1

postgresql ×1