我应该如何改进这里的样式(python class,Django 模型)?
How should I improve my styling here (python class, Django models)?
我的主要模型class是这样的:
class Article(models.Model):
title = models.CharField(max_length=120)
content = models.TextField()
authors = models.TextField(max_length=200)
year = models.IntegerField()
form = models.TextField(choices=FORMS)
language = models.TextField(choices=LANGUAGES)
region = models.TextField(choices=REGIONS)
tags = models.TextField()
def __str__(self):
return self.title
而且,为了让我的 api 将后端数据发送到前端,我有一个 serializers
class 看起来像这样:
class ArticleSerializers(serializers.ModelSerializer):
class Meta:
model = Article
fields = ('id', 'title', 'content', 'authors', 'year'...)
显然,目前将 fields
写成一堆硬编码字符串的方式非常笨拙且容易出错(因为我可能会更改 Article
class 中的字段但忘记更新序列化程序中的 fields
)。
所以我的问题是,如何改进 fields
的样式?
另外,另外一个问题,这种编码规则/原则叫什么,当你试图让代码的一部分依赖于另一部分时,你需要改变一部分,而不是总是必须记住更改两个部分?
谢谢!
documentation on specifying which fields to include [drf-doc] 说:
You can also set the fields attribute to the special value '__all__'
to indicate that all fields in the model should be used.
因此我们可以包含所有字段:
class ArticleSerializers(serializers.ModelSerializer):
class Meta:
model = Article
<b>fields = '__all__'</b>
如果要排除某些字段,可以使用 exclude
选项:
You can set the exclude
attribute to a list of fields to be excluded from the serializer.
因此,如果您想排除 tags
,您可以使用:
class ArticleSerializers(serializers.ModelSerializer):
class Meta:
model = Article
<b>exclude = ['tags']</b>
Clearly, the current way of writing fields as a bunch of hard-coded strings is very clumsy and prone to mistake
通常情况下,元class 逻辑如果在构造 class 时找不到该字段,则会引发异常,因此当您启动应用。因此,这意味着拼写错误不会导致任何问题。唯一可能出错的是为给定模型指定 另一个 字段。
我的主要模型class是这样的:
class Article(models.Model):
title = models.CharField(max_length=120)
content = models.TextField()
authors = models.TextField(max_length=200)
year = models.IntegerField()
form = models.TextField(choices=FORMS)
language = models.TextField(choices=LANGUAGES)
region = models.TextField(choices=REGIONS)
tags = models.TextField()
def __str__(self):
return self.title
而且,为了让我的 api 将后端数据发送到前端,我有一个 serializers
class 看起来像这样:
class ArticleSerializers(serializers.ModelSerializer):
class Meta:
model = Article
fields = ('id', 'title', 'content', 'authors', 'year'...)
显然,目前将 fields
写成一堆硬编码字符串的方式非常笨拙且容易出错(因为我可能会更改 Article
class 中的字段但忘记更新序列化程序中的 fields
)。
所以我的问题是,如何改进 fields
的样式?
另外,另外一个问题,这种编码规则/原则叫什么,当你试图让代码的一部分依赖于另一部分时,你需要改变一部分,而不是总是必须记住更改两个部分?
谢谢!
documentation on specifying which fields to include [drf-doc] 说:
You can also set the fields attribute to the special value
'__all__'
to indicate that all fields in the model should be used.
因此我们可以包含所有字段:
class ArticleSerializers(serializers.ModelSerializer):
class Meta:
model = Article
<b>fields = '__all__'</b>
如果要排除某些字段,可以使用 exclude
选项:
You can set the
exclude
attribute to a list of fields to be excluded from the serializer.
因此,如果您想排除 tags
,您可以使用:
class ArticleSerializers(serializers.ModelSerializer):
class Meta:
model = Article
<b>exclude = ['tags']</b>
Clearly, the current way of writing fields as a bunch of hard-coded strings is very clumsy and prone to mistake
通常情况下,元class 逻辑如果在构造 class 时找不到该字段,则会引发异常,因此当您启动应用。因此,这意味着拼写错误不会导致任何问题。唯一可能出错的是为给定模型指定 另一个 字段。