小编dow*_*123的帖子

在Django REST框架中优化数据库查询

我有以下型号:

class User(models.Model):
    name = models.Charfield()
    email = models.EmailField()

class Friendship(models.Model):
    from_friend = models.ForeignKey(User)
    to_friend = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)

这些模型用于以下视图和序列化程序:

class GetAllUsers(generics.ListAPIView):
    authentication_classes = (SessionAuthentication, TokenAuthentication)
    permission_classes = (permissions.IsAuthenticated,)
    serializer_class = GetAllUsersSerializer
    model = User

    def get_queryset(self):
        return User.objects.all()

class GetAllUsersSerializer(serializers.ModelSerializer):

    is_friend_already = serializers.SerializerMethodField('get_is_friend_already')

    class Meta:
        model = User
        fields = ('id', 'name', 'email', 'is_friend_already',)

    def get_is_friend_already(self, obj):
        request = self.context.get('request', None)

        if request.user != obj and Friendship.objects.filter(from_friend = user):
            return True
        else:
            return False
Run Code Online (Sandbox Code Playgroud)

所以基本上,对于GetAllUsers视图返回的每个用户,我想打印出用户是否是请求者的朋友(实际上我应该检查from_和to_friend,但对于问题并不重要)

我看到的是,对于数据库中的N个用户,有1个查询用于获取所有N个用户,然后在序列化程序中查询1xN个查询 get_is_friend_already

有没有办法在休息框架方式中避免这种情况?也许是将select_related …

python django-orm django-queryset django-select-related django-rest-framework

19
推荐指数
2
解决办法
1万
查看次数

FragmentPagerAdapter - 当用户转到新标签时如何检测滑动或标签点击?

我有一个MainActivity有三个片段FragmentPagerAdapter如下所示.如何通过滑动或单击选项卡,如何找出用户从第一个片段到第二个片段或从第二个片段到第二个片段的时间?我看到这个getItem()方法并没有像我声明的那样被调用mViewPager.setOffscreenPageLimit(2);

public class MainThreeTabAdapter extends FragmentPagerAdapter {

    private final String[] CONTENT = new String[]{"News", "Rewards", "Me"};

    public MainThreeTabAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        if (position == 0) {
            return NewsFragment.newInstance();
        } else if (position == 1) {
            return RewardsFragment.newInstance();
        } else if (position == 2) {
            return MeFragment.newInstance(true, App.getAccountData().getId());
        } else {
            return null;
        }

    }

    @Override
    public CharSequence getPageTitle(int position) {
        return CONTENT[position % CONTENT.length];
    } …
Run Code Online (Sandbox Code Playgroud)

android android-tabhost android-fragments android-viewpager android-pageradapter

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

芹菜 - 在Heroku上对工人和时钟进程

我有一个定期任务,我正在使用worker在heroku procfile上实现:

Procile

web: gunicorn voltbe2.wsgi --log-file - --log-level debug
worker: celery -A voltbe2 worker --beat -events -loglevel info 
Run Code Online (Sandbox Code Playgroud)

tasks.py

class PullXXXActivityTask(PeriodicTask):
    """
    A periodic task that fetch data every 1 mins.
    """
    run_every = timedelta(minutes=1)

    def run(self, **kwargs):
        abc= MyModel.objects.all()
        for rk in abc:
            rk.pull()
        logger = self.get_logger(**kwargs)
        logger.info("Running periodic task for XXX.")

        return True
Run Code Online (Sandbox Code Playgroud)

对于这个句号,我需要--beat(我通过关闭它来检查,并且它不重复任务).所以,在某种程度上,--beat时钟的工作(https://devcenter.heroku.com/articles/scheduled-jobs-custom-clock-processes)

我担心的是:如果我将工作者扩展heroku ps:scale worker=2为2x dynos,我发现在worker.1和worker.2上有两个节拍从日志中运行:

 Aug 25 09:38:11 emstaging app/worker.2: [2014-08-25 16:38:11,580: INFO/Beat] Scheduler: Sending due task apps.notification.tasks.SendPushNotificationTask …
Run Code Online (Sandbox Code Playgroud)

django multithreading clock heroku celery

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

Python中的FIX协议 - 实现流媒体报价的登录和请求

我试图用python quickfix(FIX 4.2)实现基本的FIX请求,但是文档很少让我完全理解它(我已经做了很多研究,问题末尾的链接 - 所以请放心这不是一个没有做任何挖掘的问题)

登录请求--- A.

8=FIX.4.2 | 9=108 | 35=A | 34=1 | 49=ACCOUNTXXX | 52=20161116-00:00:15.281 | 56=CNX | 553=ACCOUNTXXXSTR1 | 554=Stater123 | 98=0 | 108=60 | 141=Y | 10=133 |
Run Code Online (Sandbox Code Playgroud)

这将是预期的登录响应

8=FIX.4.2 | 9=77 | 35=A | 49=CNX | 34=1 | 52=20161116-00:00:17.928 | 56= ACCOUNTXXXSTR1 | 98=0 | 108=60 | 141=Y | 10=140 |
Run Code Online (Sandbox Code Playgroud)

请求以欧元/美元为单位的实时/流媒体报价--- B.

8=FIX.4.2 | 9=142 | 35=V | 34=8 | 49=ACCOUNTXXX | 52=20161116-12:19:48.269 | 56=CNX | 146=1 | 55=EUR/USD | 262=2016110213351833862 | 263=2 …
Run Code Online (Sandbox Code Playgroud)

python quickfix fix-protocol

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

有没有办法使用带有Authtoken的Django Rest Framework的可浏览API

如何通过authtoken(而不是username/pwd)进行身份验证,为特定用户使用Django Rest Framework可浏览API?就像我在Chrome中为POSTMAN做的那样

谢谢

django-authentication django-rest-framework

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

在 Model.Meta 中使用 CheckConstraint 和 Django GenericForeignKey 时出错 - 此查询中不允许加入字段引用

我试图限制 GFK 只指向几个模型的对象,我认为 CheckConstraint 将是一个很好的方法,但是我得到了这个错误

class ManualAdjustment(Model):
    content_type = models.ForeignKey(ContentType, null=True, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField(null=True)

    booking_obj = GenericForeignKey('content_type', 'object_id')  
    # should point to a app1.Booking1 or app2.Booking2 or app3.Booking3 only - trying to enforce this via CheckConstraint


    class Meta:
        constraints = [
            models.CheckConstraint(
                check=
                Q(content_type__app_label='app1', content_type__model='booking1') |
                Q(content_type__app_label='app2', content_type__model='booking2') |
                Q(content_type__app_label='app3', content_type__model='booking3'),
                name='myconstraint_only_certain_models'),
        ]

Run Code Online (Sandbox Code Playgroud)

我在迁移时出错

    execute_from_command_line(sys.argv)
  File "/Users/myuser/.virtualenvs/xenia371/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/Users/myuser/.virtualenvs/xenia371/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/myuser/.virtualenvs/xenia371/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/myuser/.virtualenvs/xenia371/lib/python3.7/site-packages/django/core/management/commands/sqlmigrate.py", …
Run Code Online (Sandbox Code Playgroud)

django generic-foreign-key django-postgresql django-migrations django-generic-relations

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

Django 休息框架 - PrimaryKeyRelatedField

我正在关注 Django REST 框架教程,此时我在这里:http : //www.django-rest-framework.org/tutorial/4-authentication-and-permissions#adding-endpoints-for-our-user -楷模

我的 UserSerializer 代码如下所示:

class UserSerializer(serializers.ModelSerializer):
    snippets = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

    class Meta:
        model = User
        fields = ('id', 'username', 'snippets')
Run Code Online (Sandbox Code Playgroud)

我试图了解到底什么是 PrimaryKeyRelatedField。为此,我正在按如下方式更改代码并刷新 URLhttp://127.0.0.1:8000/users/以查看不同的输出

变体 1

snippets = serializers.RelatedField(many=True, read_only=True)


{
    "count": 1, 
    "next": null, 
    "previous": null, 
    "results": [
        {
            "id": 1, 
            "username": "som", 
            "snippets": [
                "Snippet title = hello", 
                "Snippet title = New2"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这是打印出__unicode__()片段的值。我期待这个

变体 2 - 使用 PrimaryKeyRelatedField

snippets = serializers.PrimaryKeyRelatedField(many=True, read_only=True)


{
    "count": …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

9
推荐指数
1
解决办法
2万
查看次数

FragmentPagerAdapter与ViewPager之间的区别与OffScreenLimit设置为1和FragmentStatePagerAdapter?

FragmentPagerAdapterViewPager与OffScreenLimit设置为1和FragmentStatePagerAdapter?之间有什么区别?

关于FragmentPagerAdapterGoogle的指南说:

此版本的寻呼机最适合在有少量通常更多静态片段进行分页时使用,例如一组选项卡.用户访问的每个页面的片段将保留在内存中,但其视图层次结构可能在不可见时被销毁.这可能导致使用大量内存,因为片段实例可以保持任意数量的状态.对于较大的页面集,请考虑FragmentStatePagerAdapter.

关于FragmentStatePagerAdapter:

当存在大量页面时,此版本的寻呼机更有用,更像列表视图.当页面对用户不可见时,它们的整个片段可能被破坏,只保留该片段的保存状态.与FragmentPagerAdapter相比,这允许寻呼机保持与每个被访问页面相关联的更少的存储器,代价是在页面之间切换时可能具有更多的开销.

我想如果我将offscreenlimit设置为1,它会破坏当前片段的下两个片段之外的所有片段,并且它的行为类似于FragmentStatePagerAdapter.它是否正确?

android android-fragments android-viewpager android-pageradapter

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

textview上的Android内存泄漏 - LeakCanary(可以忽略泄漏)

当我从启动画面转到主要活动时,LeakCanary会显示以下内存泄漏.我知道这是由于Android操作系统本身的故障导致的预期泄漏,但有没有办法可以避免这种情况(通过在某处设置某些TextView的细节?)

D/LeakCanary? * LEAK CAN BE IGNORED.
D/LeakCanary? * com.gmspartnersltd.earthmiles.views.ActivitySignUp_ has leaked:
D/LeakCanary? * GC ROOT static android.text.TextLine.sCached
D/LeakCanary? * references array android.text.TextLine[].[1]
D/LeakCanary? * references android.text.TextLine.mCharacterStyleSpanSet
D/LeakCanary? * references android.text.SpanSet.spans
D/LeakCanary? * references array android.text.style.CharacterStyle[].[1]
D/LeakCanary? * references com.gmspartnersltd.earthmiles.views.ActivitySignUp$2.this$0 (anonymous class extends android.text.style.ClickableSpan)
D/LeakCanary? * leaks com.gmspartnersltd.earthmiles.views.ActivitySignUp_ instance
D/LeakCanary? [ 05-22 08:54:52.160 13969:18091 D/LeakCanary ]
    * Reference Key: bb8124a9-2829-4ff3-8ded-13cf35f80f54
D/LeakCanary? * Device: Genymotion generic Google Nexus 5 - 5.0.0 - API 21 - 1080x1920 vbox86p
D/LeakCanary? * Android Version: …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks ddms android-memory leakcanary

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

如何注册已在admin中注册的模型?

我正在尝试更改django包中的字段管理中的字段顺序(其余框架)

我定义了一个新的管理员,但得到了"已经注册的模型"错误.当然必须有办法做到这一点?

from rest_framework.authtoken.models import Token
class AuthTokenAdmin(admin.ModelAdmin):
    list_display = ('user', 'key',)


admin.site.register(Token, AuthTokenAdmin)
Run Code Online (Sandbox Code Playgroud)

django django-admin django-admin-tools

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