我有以下代码完美地工作.我可以Post
通过选择图像和用户从DRF面板创建对象.但是,我希望DRF由当前登录的用户填充用户字段.
models.py
class Post(TimeStamped):
user = models.ForeignKey(User)
photo = models.ImageField(upload_to='upload/')
hidden = models.BooleanField(default=False)
upvotes = models.PositiveIntegerField(default=0)
downvotes = models.PositiveIntegerField(default=0)
comments = models.PositiveIntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)
serializers.py
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ['id', 'user', 'photo']
Run Code Online (Sandbox Code Playgroud)
views.py
class PhotoListAPIView(generics.ListCreateAPIView):
queryset = Post.objects.filter(hidden=False)
serializer_class = PostSerializer
authentication_classes = (SessionAuthentication, BasicAuthentication)
permission_classes = (IsAuthenticated,)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我想获得Django Group中所有用户的列表.例如:
User.objects.filter(group='Staff')
我找不到如何在文档中的任何位置执行此查询.
我已经在CentOS 7 VPS中安装了PHP 5.4.我现在正在尝试使用PHP脚本访问.mdb格式的旧数据库.
然而,我的phpinfo()页说,只有mysql
和sqlite
PDO驱动程序启用.没有启用名为ODBC的驱动程序.
这就是为什么我试图按照本教程来实现它的原因.但它不起作用.bash: ./configure: No such file or directory
.
我不知道从哪个文件夹运行那里列出的命令.是否有一个命令允许我从系统安装PDO ODBC驱动程序,例如yum -y install php_odbc
哪个更容易让我使用?如果没有,我做错了什么?
我有一个EuropartsBuyer
名为的组和模型Product
.
以下代码向Product模型添加权限.
class Meta:
permissions = (
("can_add_cost_price", "Can add cost price"),
)
Run Code Online (Sandbox Code Playgroud)
在我的一个视图中,我有以下代码将此权限添加到该组.
europarts_buyer, created = Group.objects.get_or_create(name='EuropartsBuyer')
add_cost_price = Permission.objects.get(codename='can_add_cost_price')
europarts_buyer.permissions.add(add_cost_price)
Run Code Online (Sandbox Code Playgroud)
在Django Admin的帮助下,我已经向该组添加了一个用户EuropartsBuyer
.
当我在另一个视图中使用以下代码时
if request.user.has_perm('can_add_cost_price'):
do something
Run Code Online (Sandbox Code Playgroud)
结果应该是,True
但它显示False
.因此,if子句下的代码不会运行.
我已经在Django shell中导入了当前登录的用户,当我再次测试权限时,它显示为False.
我在这做错了什么?
我已net
根据数量qty
字段使用以下代码成功更改了对象中的特定字段.
class OrderDetailsProductEdit(UpdateView):
model = OrdersPlaced
fields = ['qty']
template_name = 'backend/order-details-product-edit.html'
success_url = '../../../'
def form_valid(self, form):
form.instance.net = form.instance.qty * form.instance.price
# order = Order.objects.get(pk=self.kwargs['order_id'])
# subtotal = OrdersPlaced.objects.filter(order=order).aggregate(Sum('net'))['net__sum']
# order.subtotal = subtotal
# order.save()
return super(OrderDetailsProductEdit, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)
但是,我也试图改变另一个模型中的数据.确切地说,我想要net
查询所有值的总和并更新subtotal
另一个表中的字段.
请注意下面注释掉的行def form_valid
.我没有混淆这些线的工作,但我需要它们在保存当前模型后执行,因为它们取决于当前模型的值.
除了subtotal
在net
保存当前模型中的字段之前计算ANOTHER模型中的字段之外,我没有发现任何错误.因此,总数是错误的答案.
我究竟做错了什么?
我正在尝试按照教程阅读Django频道的文档.在settings.py
文件中,我尝试使用以下代码将内存BACKEND更改为redis后端:
CHANNEL_LAYERS = {
"default": {
"BACKEND": "asgi_redis.RedisChannelLayer",
"CONFIG": {
"hosts": [("localhost", 6379)],
},
"ROUTING": "chan.routing.channel_routing",
},
}
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,运行该runserver
命令的控制台显示以下错误:
ConnectionError: Error 61 connecting to localhost:6379. Connection refused.
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
我正在尝试创建一个自定义外键。我继承了它并尝试重写__init__
方法来提供位置参数to
,on_delete
如下所示:
from django.contrib.auth.models import User
class CurrentUserField(models.ForeignKey):
def __init__(self, **kwargs):
super().__init__(User, models.CASCADE, **kwargs)
class DemoModel(models.Model):
owner = CurrentUserField()
info = models.TextField()
Run Code Online (Sandbox Code Playgroud)
当我运行时它给我以下错误makemigrations
:
TypeError: __init__() got multiple values for argument 'on_delete'
Run Code Online (Sandbox Code Playgroud)
我似乎无法弄清楚问题是什么。我只为两个位置参数提供两个值。
我在 django views.py 中有一个 DetailView,我希望能够将来自 url ex:localhost:8000/myapp/details/3/ 的 pk 值和 request.user.id 与 if 语句进行比较。
视图中无外乎以下几行代码:
class UserDetail(DetailView):
model = Profile
template_name = 'details.html'
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激。
我正在使用Django CreateView,并且可以在模板中单独设置标签和字段。但是,我无法添加所需的引导程序类。目前,我有以下表格。
<form action="" method="post" class="form-horizontal">{% csrf_token %}
<div class="form-group">
<label class="control-label col-xs-1" for="name">{{ form.name.label }}:</label>
<div class="col-xs-9">
{{ form.name }}
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-1" for="name">{{ form.code.label }}:</label>
<div class="col-xs-9">
{{ form.code }}
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-1" for="name">{{ form.phone.label }}:</label>
<div class="col-xs-9">
{{ form.phone }}
</div>
</div>
<input class="btn btn-primary col-xs-offset-1 col-xs-9" type="submit" value="Create" />
</form>
Run Code Online (Sandbox Code Playgroud)
如何在类变量名称,代码和电话中添加类?
我想根据Django管理员用户提供的字段值将图像上传到媒体根目录.这是我编写的代码,我知道upload_to参数导致了问题.但我不知道如何使它发挥作用.
class Info(models.Model):
file_no = models.CharField(max_length=100)
date = models.DateField()
area = models.IntegerField(default=0.00)
mouja = models.CharField(max_length=100)
doc_type_choices = (
('deed', 'Deed'),
('khotian', 'Khotian'),
)
doc_type = models.CharField(max_length=50,
choices=doc_type_choices,
default='deed')
doc_no = models.CharField(max_length=50)
def __unicode__(self):
return self.file_no
class Image(models.Model):
info = models.ForeignKey('Info')
content = models.ImageField(upload_to=self.info.mouja/self.info.doc_type)
def __unicode__(self):
return self.info.file_no
Run Code Online (Sandbox Code Playgroud)
每当我运行python manage.py makemigrations时它会显示NameError:name'self '未定义 事先感谢您的帮助!
django ×9
model ×2
channels ×1
class ×1
detailview ×1
django-users ×1
field ×1
filefield ×1
forms ×1
if-statement ×1
imagefield ×1
models ×1
odbc ×1
overriding ×1
pdo ×1
permissions ×1
php ×1
python ×1
redis ×1
templates ×1
url ×1
view ×1