我有以下代码
test = "have it break."
selectiveEscape = "Print percent % in sentence and not %s" % test
print(selectiveEscape)
Run Code Online (Sandbox Code Playgroud)
我想获得输出:
Print percent % in sentence and not have it break.
Run Code Online (Sandbox Code Playgroud)
实际发生了什么:
selectiveEscape = "Use percent % in sentence and not %s" % test
TypeError: %d format: a number is required, not str
Run Code Online (Sandbox Code Playgroud) 我正在启动一个具有复杂权限结构的应用程序,该结构将不可避免地由用户自己管理。我在模型中具有以下权限:
class Meta:
permissions = (
('can_view', 'View project'),
('manage_view', 'Can assign View project'),
('can_edit', 'Edit project'),
('manage_edit', 'Can assign Edit project'),
('can_delete', 'Delete project'),
('manage_delete', 'Can assign Delete project'),
('creator', 'Full access to model features.'),
)
Run Code Online (Sandbox Code Playgroud)
这些将在Django-guardian的对象级别进行管理,而我正在使用自定义mixins处理所有各种组合和功能。
“创建者”权限分配给对象的初始创建者,他们可以通过基于电子邮件的邀请系统将其他权限分配给用户。
我的问题围绕着选项,这些选项用于分配创建者对对象的创建权限。
到目前为止,我想到的一些方法是:
保存后在视图中分配
newObject.save()
assign('creator', User, newObject)
Run Code Online (Sandbox Code Playgroud)
通常,我更喜欢从我的观点中排除此类事件。
覆盖save()
这种方法的问题是我必须授予对User对象的保存访问权限,这意味着也要覆盖init以设置self.request = request。
后保存信号
我知道我可以利用此信号,但是与前两个信号相比,我还没有尝试实现此信号。
希望这可以对我所处的事物提供足够的洞见。
我很想知道这些方法中最好的是什么,或者如果它们都是坏主意,那么可以选择什么替代实现。
谢谢,
京东
我想解决以下情况.
我有一个侧面板,包含活动用户的信息.为此,需要将UserInfo模型的实例传递给视图.
另外,我想将许多其他模型实例传递给页面(例如,购买,收藏夹等).
我知道通过覆盖get_context_data很容易做到这一点.
def get_context_data(self, **kwargs):
kwargs['purchases'] = Purchases.objects.get(id=1)
kwargs['favourites'] = Favourites.objects.get(id=1)
.... etc
return super(UploadFileView, self).get_context_data(**kwargs)
Run Code Online (Sandbox Code Playgroud)
所以我的问题是 - 用于此目的的最佳/最合适的CBV是什么?
我的目标是能够使用get_FOO_display(),因此据我所知,我必须在模型字段中指定选项.同时我想使用ModelForm作为RadioButton渲染表单.
The problem I am having is that the default value of "------" that would be used in a dropdown select is showing up as one of my RadioButton options.
models.py
class Medication(models.Model):
YESNO_CHOICES = [(0, 'No'), (1, 'Yes')]
Allergies = models.BigIntegerField(verbose_name='Allergies:', choices=YESNO_CHOICES)
Run Code Online (Sandbox Code Playgroud)
forms.py
I have tried just specifying a RadioButton widget in the ModelForm.
class mfMedication(ModelForm):
class Meta:
model = Medication
widgets = {
'Allergies': RadioSelect(),
}
Run Code Online (Sandbox Code Playgroud)
and also specifying the RadioButton with the CHOICES.
class mfMedication(ModelForm):
class Meta: …Run Code Online (Sandbox Code Playgroud) 我正在使用 ListView 显示所有 NewPerson 并按 5 个结果分页。NewPersons 显示在表格中,左侧有一个搜索框。当在 GET 中请求搜索“q”时。为了在搜索时更改查询集,我重写了视图的 get_queryset 方法。
我遇到的问题是,因为我按 5 个结果分页,如果搜索返回超过 5 个结果,它们就会分页;但是,如果单击“下一步”查看第二页,它将返回完整对象列表的第二页,而不是搜索结果的第二页。
所以我想知道如何正确地对我的搜索结果进行分页。谢谢。京东
class PersonListView(ListView):
model = NewPerson
template_name = 'list.html'
paginate_by = 5
def get_queryset(self):
"""
Get the list of items for this view. This must be an interable, and may
be a queryset (in which qs-specific behavior will be enabled).
"""
if 'q' in self.request.GET:
q = self.request.GET['q']
queryset = NewPerson.objects.filter(Q(FirstName__icontains=q) | Q(LastName__icontains=q))
else:
if self.queryset is not None:
queryset = self.queryset
if …Run Code Online (Sandbox Code Playgroud)