我希望将具有外键的表单字段的查询集缩小到用户表,直到用户所属的组.
这些小组之前已经与我联系过了.该模型可能具有以下内容:
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.有可能这样做吗?
我尝试在编写视图集和使用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) 我尝试注册用户并返回令牌和用户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) 我试图将我的脚本分成几个带有函数的文件,因此我将一些函数移动到单独的文件中,并希望将它们导入到一个主文件中.结构是:
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) 在我django-admin,我试图做一个model不可编辑的.
所以,我overriding的方法get_readonly_fields的admin.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)
任何想法为什么?
我正在编写一个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) 用户注册成功后,我想在 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) 我目前正在开发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数组。感谢您的帮助。
每个元素本身就是一个数组。
我是 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 错误报告),他似乎在同一天就自己解决了这个问题。他没有提到解决方案,但从他的评论来看,我认为这是显而易见的......
先谢谢您的帮助!
亲切的问候。
我有这个错误,我该如何解决这个问题?
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) django ×8
python ×7
api-doc ×1
arrays ×1
django-admin ×1
django-forms ×1
factory-boy ×1
file-upload ×1
many-to-many ×1
python-2.7 ×1
python-3.x ×1