小编ala*_*ret的帖子

在django models.py上导入错误

我在app direcroty上的utils.py上写了这个函数:

from bm.bmApp.models import Client

def get_client(user):
    try:
        client = Client.objects.get(username=user.username)
    except Client.DoesNotExist:
        print "User Does not Exist"
        return None
    else:       
        return client

def to_safe_uppercase(string):
    if string is None:
        return ''
    return string.upper()
Run Code Online (Sandbox Code Playgroud)

然后,当我在models.py文件中使用函数to_safe_uppercase时,通过以下方式导入它:

from bm.bmApp.utils import to_safe_uppercase 
Run Code Online (Sandbox Code Playgroud)

我得到了python错误:

     from bm.bmApp.utils import to_safe_uppercase
ImportError: cannot import name to_safe_uppercase
Run Code Online (Sandbox Code Playgroud)

当我更改import语句时,我得到了这个问题的解决方案:

from bm.bmApp.utils import *
Run Code Online (Sandbox Code Playgroud)

但我无法理解为什么会这样,为什么当我导入特定功能时我得到了错误?

python django

10
推荐指数
3
解决办法
4540
查看次数

如何强制ViewPager使其片段重新创建?

场景:

我有一个片段ViewPager,它有一个FragmentPagerAdapter提供3片段的片段.

所以我的应用程序第一次加载时,3个选项卡片段看起来很好.

当我在应用程序中导航时,我会FragmentManager.replace加载另一个片段.

当我返回或导航到主视图(选项卡式视图)时,我的第一个和第二个选项卡是空白的.

我调试了应用程序,并且Fragment.onDestroyView永远不会调用Tab片段,所以当它再次显示时,Fragment.onCreateView永远不会再次调用,所以我的视图是空白的.

如果我导航到选项卡片段中的第三个选项卡,Fragment.onDestroy则由PageAdapter(我认为因为ViewPager上的1 offLimit)调用

所以,我的问题是,一旦另一个片段被装载在我的活动,然后我回去,或浏览选项卡式浏览,我怎么能强迫ViewPager,或者PageAdapter,甚至片段本身重新创建.

到目前为止,我尝试FragmentManager.remove(fragment)用TabView 做一个没有任何外观,也是,每次,我导航到选项卡视图我传递一个新的实例到FragmentManager.replace方法,似乎每次,他从中拉出相同的对象FragmentManager.

TabView(片段):

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.tab_view, container, false);
    viewPager = (ViewPager) view.findViewById(R.id.view_iam);
    final PagerAdapter pagerAdapter = new MyFragmentAdapter(getActivity().getSupportFragmentManager());
    viewPager.setAdapter(pagerAdapter);
    return view;
}
Run Code Online (Sandbox Code Playgroud)

PageAdapter:

private static class MyFragmentAdapter extends FragmentPagerAdapter {
    private Fragment[] tabs;
    private …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-fragments android-viewpager

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

Django 1.11上可能出现的bug有多重继承或python 3.5上的可能错误还是我?

使用python 3.5.2和django 1.11多重继承如下:

class Artist(ArtistParent):
    biography = models.CharField(max_length=255, blank=True, null=True)
    avatar = models.ImageField(null=True, blank=True, upload_to=settings.IMAGES_FOLDER)
    owner = models.ForeignKey("accounts.User", related_name="my_artists",
                              null=True, blank=True, on_delete=deletion.SET_NULL)


class SimilarBand(ArtistParent):
    pass
Run Code Online (Sandbox Code Playgroud)

每个工作都很好,但使用ORM接口:

>>> ArtistParent.objects.all().delete()
(0, {})
>>> SimilarBand.objects.all().delete()
(0, {})
>>> ArtistParent.objects.all().delete()
(0, {})
>>> SimilarBand.objects.all().delete()
(0, {})
>>> SimilarBand.objects.create(name="Similar Band Test")
<SimilarBand: Similar Band Test>
>>> SimilarBand.objects.all()
<QuerySet [<SimilarBand: Similar Band Test>]>
>>> ArtistParent.objects.all()
<QuerySet [<ArtistParent: Similar Band Test>]>
>>> SimilarBand.objects.all().count()
1
>>> ArtistParent.objects.all().count()
1
>>> len(ArtistParent.objects.all())
1
>>> len(SimilarBand.objects.all())
1
>>> [print(o) for o …
Run Code Online (Sandbox Code Playgroud)

python django python-3.x django-1.11

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