小编Sar*_*iev的帖子

Django:如何过滤属于特定组的用户

我希望将具有外键的表单字段的查询集缩小到用户表,直到用户所属的组.

这些小组之前已经与我联系过了.该模型可能具有以下内容:

myuser = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)

而我的ModelForm非常简单:

class MyForm(ModelForm):
    class Meta:
        model = MyModel
Run Code Online (Sandbox Code Playgroud)

因此,当我实例化表单时,我在views.py中执行类似的操作:

form = MyForm()
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,我如何获取myuser字段,并过滤它,以便只有'foo'组的用户出现..类似于:

form.fields["myuser"].queryset = ???
Run Code Online (Sandbox Code Playgroud)

SQL中的查询如下所示:

mysql> SELECT * from auth_user INNER JOIN auth_user_groups ON auth_user.id = auth_user_groups.user_id INNER JOIN auth_group ON auth_group.id = auth_user_groups.group_id WHERE auth_group.name = 'client';
Run Code Online (Sandbox Code Playgroud)

我想避免使用原始SQL.有可能这样做吗?

python django

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

Django休息API,自动化文档?

我尝试在编写视图集和使用django rest docs时记录API .我遇到以下问题:

  • 如果我尝试发送反向相关字段的值,它会获取值列表,但是当在Form-data中发送数据时,它会以字符串形式出现.

  • 文档UI中没有文件上传选项.

以下是我的代码:

models.py

class Area(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=100)
    address = models.TextField()
    image = models.ImageField(upload_to='area/')
    created_on = models.DateTimeField(auto_now_add=True)
    modified_on = models.DateTimeField(auto_now=True)
    zipcode = models.CharField(max_length=15, null=True)
    is_verified = models.BooleanField(default=False)

    class Meta:
        ordering = ('-modified_on',)



class Email(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    email = models.EmailField()
    area = models.ForeignKey(Area, on_delete=models.CASCADE, null=True, related_name='email')


class Phone(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    phone = models.CharField(max_length=15)
    area = models.ForeignKey(Area, on_delete=models.CASCADE, null=True, related_name='phone')
Run Code Online (Sandbox Code Playgroud)

view.py

class AreaViewSet(viewsets.ModelViewSet):
    """ …
Run Code Online (Sandbox Code Playgroud)

python django api-doc django-rest-framework django-swagger

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

Django Rest Framework - 注册后返回用户ID和令牌

我尝试注册用户并返回令牌和用户ID.这样做

from django.shortcuts import render
from rest_framework.response import Response
from rest_framework.authtoken.models import Token
from rest_framework import status
from django.contrib.auth import get_user_model

User = get_user_model()

class CreateUser(CreateAPIView):
    queryset = Profile.objects.all()
    serializer_class = UserSerializer

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)
        token, created = Token.objects.get_or_create(user=serializer.instance)
        user = User.objects.filter(user=serializer.instance)
        return Response({'token': token.key, 'id':user.id}, status=status.HTTP_201_CREATED, headers=headers)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

Cannot resolve keyword "user" into field. Choices are: auth_token, date_joined, email, first_name, groups, id, is_active, is_staff, is_superuser, last_login, last_name, logentry, password, …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

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

如何从同一文件夹中的模块导入函数?

我试图将我的脚本分成几个带有函数的文件,因此我将一些函数移动到单独的文件中,并希望将它们导入到一个主文件中.结构是:

core/
  main.py
  posts_run.py
Run Code Online (Sandbox Code Playgroud)

posts_run.py有两个功能,get_all_posts并且retrieve_posts,所以我尝试导入get_all_posts具有:

from posts_run import get_all_posts
Run Code Online (Sandbox Code Playgroud)

Python 3.5给出了错误:

ImportError: cannot import name 'get_all_posts'
Run Code Online (Sandbox Code Playgroud)

Main.py包含以下代码行:

import vk
from configs import client_id, login, password
session = vk.AuthSession(scope='wall,friends,photos,status,groups,offline,messages',   app_id=client_id, user_login=login,
                     user_password=password)
api = vk.API(session)
Run Code Online (Sandbox Code Playgroud)

然后我需要将api导入函数,所以我有能力获得对vk的API调用.

完整堆栈跟踪

Traceback (most recent call last):
  File "E:/gited/vkscrap/core/main.py", line 26, in <module>
    from posts_run import get_all_posts
  File "E:\gited\vkscrap\core\posts_run.py", line 7, in <module>
    from main import api, absolute_url, fullname
  File "E:\gited\vkscrap\core\main.py", line 26, in <module>
    from posts_run import get_all_posts …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

'Options'对象没有属性'get_all_field_names'

在我django-admin,我试图做一个model不可编辑的.

所以,我overriding的方法get_readonly_fieldsadmin.ModelAdmin.

Here is my Code

@admin.register(SMSTemplate)
class SMSTemplateAdmin(admin.ModelAdmin):
    list_display=['title', 'json', 'note']
       formfield_overrides = {
       JSONField: {'widget': PrettyJSONWidget }
    }

    def has_delete_permission(self, request, obj=None):
        return False

    def get_readonly_fields(self, request, obj=None):
        return self.model._meta.get_all_field_names()
Run Code Online (Sandbox Code Playgroud)

但我面临一个错误.我在这里粘贴错误.

'Options' object has no attribute 'get_all_field_names'
Run Code Online (Sandbox Code Playgroud)

任何想法为什么?

python django django-admin python-2.7

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

Django目录上传获取子目录名称

我正在编写一个django应用程序来上传带有表单的文件目录.

这是我正在使用的表单,允许上传目录:

class FileFieldForm(forms.Form):
    file_field = forms.FileField(widget=forms.ClearableFileInput(attrs=
        {'multiple': True, 'webkitdirectory': True, 'directory': True}))
Run Code Online (Sandbox Code Playgroud)

这是原始邮件有效负载:

------WebKitFormBoundaryPbO3HkrKGbBwgD3sd1
Content-Disposition: form-data; name="csrfmiddlewaretoken"

F575Bgl4U9dzgwePPeSW2ISZKk5c3CnRoqFasdasD0Hep6nD0LnAAObXbF92SUa96NbO2
------WebKitFormBoundaryPbO3HkrKGbBwgDsd31
Content-Disposition: form-data; name="file_field";
filename="MainDir/SubDir1/1.jpg"
Content-Type: image/jpeg


------WebKitFormBoundaryPbOasd3HkrKGbBwgD31
Content-Disposition: form-data; name="file_field";
filename="MainDir/SubDir2/2.jpg"
Content-Type: image/jpeg
Run Code Online (Sandbox Code Playgroud)

这是处理表单的视图:

class FileFieldView(FormView):
    form_class = FileFieldForm
    template_name = 'upload.html'
    success_url = 'upload'

    def post(self, request, *args, **kwargs):
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        files = request.FILES.getlist('file_field')
        if form.is_valid():
            for f in files:
                pprint("Name of file is " + f._get_name() + ' ' + f.field_name, sys.stderr)
                new_file = …
Run Code Online (Sandbox Code Playgroud)

python django file-upload django-forms directory-upload

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

Django Rest Framework - 注册后返回身份验证令牌

用户注册成功后,我想在 json 中返回一个身份验证令牌。我怎样才能做到这一点 ?

对于注册,我使用以下

seriazilers.py

class UserSerializer(ModelSerializer):
    class Meta:
        model = User
        fields = [
            'id',
            'username',
            'password',
            'email',
            ]
        write_only_fields = ('password',)
        read_only_fields = ('id',)

    def create(self, validated_data):
        user = User.objects.create(
            username=validated_data['username'],
        )

        user.set_password(validated_data['password'])
        user.save()

        return user
Run Code Online (Sandbox Code Playgroud)

视图.py

class CreateUser(CreateAPIView):
    queryset = Profile.objects.all()
    serializer_class = UserSerializer
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

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

Python将数组追加到数组

我目前正在开发DES实现,在代码的一部分中,我必须将数组追加到数组中,下面是我的代码:

C0=[1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1]

def Fiestel():
    C=[]
    C.append(C0)
    temp=[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1]
    C.append(temp)
    print(C)
Fiestel()
Run Code Online (Sandbox Code Playgroud)

如何将数组附加到现有数组上,甚至尝试将C声明为2d数组。感谢您的帮助。

每个元素本身就是一个数组。

在此处输入图片说明

python arrays

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

Django Factory Boy - 反向依赖(反向外键)常见食谱

我是 FactoryBoy 的新手。我正在尝试文档中确切示例的示例:反向依赖关系

1)提到的“UserLogFactory”是否“如此明显”,应该自己制作,如下所示:

class UserLogFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = models.UserLog
Run Code Online (Sandbox Code Playgroud)

2)我得到AttributeError

类型对象“UserLog”没有属性“ACTION_CREATE”

我在网上搜索了一下,发现了 1 个参考文献(github 错误报告),他似乎在同一天就自己解决了这个问题。他没有提到解决方案,但从他的评论来看,我认为这是显而易见的......

先谢谢您的帮助!
亲切的问候。

django factory-boy

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

Django get() 返回了多个

我有这个错误,我该如何解决这个问题?

get() 返回了多个事件——它返回了 2 个!

你们能帮我理解这意味着什么,也许可以提前告诉我将来如何避免这个错误?

模型

class Event (models.Model):
    name = models.CharField(max_length=100)
    date = models.DateField(default='')
    dicript = models.CharField(max_length=50, default='???????? ???????????')
    category = models.ForeignKey(Category,on_delete=models.CASCADE)
    adress = models.TextField(max_length=300)
    user = models.ForeignKey(User,related_name="creator",null=True)
    subs = models.ManyToManyField(User, related_name='subs',blank=True)

    @classmethod
    def make_sub(cls, this_user, sub_event):
        event, created = cls.objects.get_or_create(
            user=this_user
        )
        sub_event.subs.add(this_user)
Run Code Online (Sandbox Code Playgroud)

视图

def cards_detail (request,pk=None):
    # if pk:
    event_detail = Event.objects.get(pk=pk)
    subs = event_detail.subs.count()

    # else:
    #     return CardsView()
    args = {'event_detail':event_detail,'subs':subs}
    return render(request,'events/cards_detail.html',args)


class CardsView (TemplateView):`
    template_name = 'events/cards.html'

    def get (self,request):
        events = …
Run Code Online (Sandbox Code Playgroud)

python django many-to-many

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