小编Tom*_*ock的帖子

如何将嵌套路由移动到单独的 urls.py 中?

我想知道我是否可以得到你的帮助。

我有一个 urls.py,其中包含以下内容:

router = routers.SimpleRouter()
# AccountViewSet in accounts app
router.register(r'accounts', AccountViewSet) 
# ProjectViewSet in projects app
router.register(r'projects', ProjectViewSet) 

accounts_router = routers.NestedSimpleRouter(router, r'accounts', lookup='account')
# AccountProjectsViewSet in projects app
accounts_router.register(r'projects', AccountProjectsViewSet) 
Run Code Online (Sandbox Code Playgroud)

如您所见,由于嵌套路由,帐户和项目之间的联系非常紧密。

我想将帐户路由逻辑移到accounts/urls.py,将项目路由逻辑移到projects/urls.py。

到目前为止,我在这方面的尝试导致以下错误:

RuntimeError: parent registered resource not found
Run Code Online (Sandbox Code Playgroud)

甚至可以将这个逻辑分开,还是需要在一起?

谢谢你的建议。

django django-urls django-rest-framework

5
推荐指数
0
解决办法
468
查看次数

如何在换行时隐藏分隔符?

我认为用一个例子来解释这是最容易的.

假设我在这样的网页上有一个列表:

word one, word two, word three, word four, word five, word six
Run Code Online (Sandbox Code Playgroud)

如果用户的屏幕分辨率较小,列表最终可能会像这样包装:

word one, word two, word three, word four, word five, 
word six
Run Code Online (Sandbox Code Playgroud)

如您所见,第一行末尾有一个逗号.我想改变它,所以如果发生这样的事情,隐藏逗号.这意味着它看起来像这样:

word one, word two, word three, word four, word five
word six
Run Code Online (Sandbox Code Playgroud)

有没有办法用CSS或Javascript做到这一点?

谢谢你的帮助.

javascript css

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

如何显示枚举字段的文本值?

我在用django_enumfield

我的模型如下所示:

class GenderValues(enum.Enum):
    NONE = 0
    MALE = 1
    FEMALE = 2
    BOTH = 3

class Gender(models.Model):
    gender = enum.EnumField(GenderValues, default=GenderValues.NONE)

    def __str__(self):
        return self.gender
Run Code Online (Sandbox Code Playgroud)

我已经在管理区域中公开了该模型,如下所示:

admin.site.register(Gender)
Run Code Online (Sandbox Code Playgroud)

然后我可以转到管理区域并添加性别。

问题:

性别显示为数字(例如,如果我选择“男性”,则为 1)而不是“男性”。

注意我已经尝试向 GenderValues 添加一个标签,如下所示,但没有什么区别:

labels = {
    MALE: 'Male',
}
Run Code Online (Sandbox Code Playgroud)

你知道如何在管理区域中显示“MALE”或“Male”而不是 1 吗?

谢谢。

django

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

如何在 Django 管理区域中显示多对多关系字段(如果多对多关系使用“通过”)?

我知道在管理区域中显示外键字段很容易,但是如果使用 through ,我如何显示多对多关系的字段?

模型.py:

class Pizza(models.Model):
    toppings = models.ManyToManyField(Topping, through='PizzaTopping')

class Topping(models.Model):
    topping = models.CharField(max_length=255)

class PizzaTopping(models.Model):
    pizza = models.ForeignKey(Pizza)
    topping = models.ForeignKey(Topping)
Run Code Online (Sandbox Code Playgroud)

管理.py:

class PizzaAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {
            'fields': ('toppings')
        }),
    })
)
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

<class 'pizzas.admin.PizzaAdmin'>: (admin.E013) The value of 'fieldsets[0][1]["fields"]' cannot include the many-to-many field 'toppings' because that field manually specifies a relationship model.
Run Code Online (Sandbox Code Playgroud)

我想显示一个框或列表框,它允许我选择一个浇头。

这可能吗?

谢谢

django django-models django-forms django-admin

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

Scrapy:CrawlSpider会忽略__init__中设置的规则

我已经被困在这几天了,这让我发疯了.

我这样叫我的scrapy蜘蛛:

scrapy crawl example -a follow_links="True"
Run Code Online (Sandbox Code Playgroud)

我传入"follow_links"标志来确定是否应该删除整个网站,或者只是我在蜘蛛中定义的索引页面.

在spider的构造函数中检查此标志以查看应设置的规则:

def __init__(self, *args, **kwargs):

    super(ExampleSpider, self).__init__(*args, **kwargs)

    self.follow_links = kwargs.get('follow_links')
    if self.follow_links == "True":
        self.rules = (
            Rule(LinkExtractor(allow=()), callback="parse_pages", follow=True),
        )
    else:
        self.rules = (
            Rule(LinkExtractor(deny=(r'[a-zA-Z0-9]*')), callback="parse_pages", follow=False),
        )
Run Code Online (Sandbox Code Playgroud)

如果它是"真",则允许所有链接; 如果它是"假",则所有链接都被拒绝.

到目前为止,这么好,但这些规则被忽略了.我可以获得遵循规则的唯一方法是在构造函数之外定义它们.这意味着,像这样的东西会正常工作:

class ExampleSpider(CrawlSpider):

    rules = (
        Rule(LinkExtractor(deny=(r'[a-zA-Z0-9]*')), callback="parse_pages", follow=False),
    )

    def __init__(self, *args, **kwargs):
        ...
Run Code Online (Sandbox Code Playgroud)

所以基本上,在__init__构造函数中定义规则会导致规则被忽略,而在构造函数之外定义规则会按预期工作.

我不明白这.我的代码如下.

import re
import scrapy

from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from w3lib.html import remove_tags, remove_comments, replace_escape_chars, replace_entities, remove_tags_with_content …
Run Code Online (Sandbox Code Playgroud)

python scrapy scrapy-spider

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

如何将“折叠”样式应用于管理区域中的 TabularInline 对象?

在管理区域中为模型定义添加视图和更改视图的字段集时,可以最小化这样的部分:

class User(admin.ModelAdmin):
    fieldsets = (
        ('First Heading', {
            'classes': ('collapse',),
            'fields': ('one', 'two')
        }),
        ('Second Heading', {
            'fields': ('three',)
        }),
    )
Run Code Online (Sandbox Code Playgroud)

重要的一点是'classes': ('collapse',)

我已将 TabularInline 对象添加到管理屏幕之一。基本上,当我编辑用户时,我可以看到他的朋友列表。

我希望 TabularInline 对象最初被折叠,类似于 'classes': ('collapse',).

我已经尝试向 TabularInine 类添加一个字段集元组,但它没有任何区别:

class Friends(admin.TabularInline):
    model = Friend
    fieldsets = (
        ('Friends', {
            'classes': ('collapse',),
            'fields': ('name',)
        }),
    )
Run Code Online (Sandbox Code Playgroud)

你能帮我吗?

谢谢你。

django django-admin

0
推荐指数
1
解决办法
2219
查看次数