我一直试图让ModelMultipleChoiceFilter工作几个小时,并阅读了DRF和Django Filters文档.
我希望能够根据通过ManyToManyField分配给它们的标记来过滤一组网站.例如,我希望能够获得已标记为"烹饪"或"养蜂"的网站列表.
这是我当前models.py的相关片段:
class SiteTag(models.Model):
"""Site Categories"""
name = models.CharField(max_length=63)
def __str__(self):
return self.name
class Website(models.Model):
"""A website"""
domain = models.CharField(max_length=255, unique=True)
description = models.CharField(max_length=2047)
rating = models.IntegerField(default=1, choices=RATING_CHOICES)
tags = models.ManyToManyField(SiteTag)
added = models.DateTimeField(default=timezone.now())
updated = models.DateTimeField(default=timezone.now())
def __str__(self):
return self.domain
Run Code Online (Sandbox Code Playgroud)
我目前的views.py片段:
class WebsiteFilter(filters.FilterSet):
# With a simple CharFilter I can chain together a list of tags using &tag=foo&tag=bar - but only returns site for bar (sites for both foo and bar exist).
tag = django_filters.CharFilter(name='tags__name')
# THE …Run Code Online (Sandbox Code Playgroud) 我正在定义使用GCC进行编译的Tiva C系列Launchpad的寄存器.
在头文件中我有如下代码:
样品A.
#define GPIOB_BASE 0x40005000
#define GPIOB_AFSEL_R (*((unsigned long *) GPIOB_BASE + 0x420))
#define GPIOB_DEN_R (*((unsigned long *) GPIOB_BASE + 0x51C))
#define GPIOB_PCTL_R (*((unsigned long *) GPIOB_BASE + 0x52C))
Run Code Online (Sandbox Code Playgroud)
为了检查它是否正在按照我的想法进行操作,我编写了这个小程序并按预期返回"10".我继续我的项目,并迅速遇到硬故障的大问题(写入不可写的地址).
宏测试
#include <stdio.h>
#define BASE 0x9
#define BASE + PLUS_ONE 0x01
int main(void){
printf("%d", PLUS_ONE);
}
Run Code Online (Sandbox Code Playgroud)
经过几个小时的拉动我的头发试图调试,我最终用硬编码的等价物替换了地址.
样品B.
#define GPIOB_BASE 0x40005000
#define GPIOB_AFSEL_R (*((unsigned long *) 0x40005420))
#define GPIOB_DEN_R (*((unsigned long *) 0x4000551C))
#define GPIOB_PCTL_R (*((unsigned long *) 0x4000552C))
Run Code Online (Sandbox Code Playgroud)
硬故障消失了,事情开始起作用了!
有人可以帮我理解样品A和样品B之间的区别吗?
(是的,我应该更加关注生成的汇编代码)